プログラムbcopyでコンパイルできるのですがうまくコピーできません。ファイルLACKNUM2.DAT(44バイト)をファイルLACKNUM3.DATにコピーしてもファイルLACKNUM3.DAT(0バイト)となっています。教科書どおりに打ち込んでいるんですが。どこが悪いのでしょうか。
/* bcopy … ファイルのコピー */ #include <stdio.h> #include <strings.h> #define BSIZE 128 // この大きさ(128byte)に分割してコピー int main(int argc, char *argv[]) { int n; FILE *src, *dst; // *srcと *dstはファイルポインタ unsigned char buf[BSIZE]; if (argc != 3) { fprintf(stderr, "パラメータが不正です。\n"); fprintf(stderr, "bcopy コピー元ファイル名 コピー先ファイル名\n"); } else { if ((src = fopen(*++argv, "rb")) == NULL) { // *++argv=const char *filenameも ,"rb"=const char *modeもポインタ // *argvはコピー元ファイル名 fprintf(stderr, "ファイル%sがオープンできません。\n", *argv); return (1); } else if ((dst = fopen(*++argv, "wb")) == NULL) { // *argvはコピー先ファイル名 fprintf(stderr, "ファイル%sがオープンできません。\n", *argv); fclose(src); return (1); } else { while ((n = fread(buf, BSIZE, 1, src)) > 0) { //コピー元ファイル名(src)からbufに読み込む // ファイルポインタsrcから BSIZE バイトのデータを // 1 個読み込み、読み込みデータ格納先のポインタbufに格納する */ fwrite(buf, n, 1, dst); //bufからコピー先ファイル名(dst)に読み込む } fclose(src); fclose(dst); } } return (0) } 実行結果 ...@naka ~ $ gcc -o bcopy bcopy.c -Wall ...@naka ~ $ bcopy LACKNUM2.DAT LACKNUM3.DAT ...@naka ~ $ ```
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/01/24 10:12