C言語でファイルの内容を順序を逆にして、別のファイルにコピーするプログラム文があるのですが、
実際に実行してみると、確かに逆にはなるのですが、なぜか改行が一つ増えてコピーされてしまって
いるようです。以下がプログラム文です。
c
1#include <stdio.h> 2#include <stdlib.h> 3 4int main(int argc, char *argv[]) 5{ 6 long loc; 7 FILE *in, *out; 8 char ch; 9 10 /* コマンドライン引数の値が正しいか調べる */ 11 if(argc!=3) { 12 printf("使用法:<プログラム名> <コピー元> <コピー先>\n"); 13 exit(1); 14 } 15 16 if((in = fopen(argv[1], "rb"))==NULL) { 17 printf("入力ファイルを開くことができません\n"); 18 exit(1); 19 } 20 21 if((out = fopen(argv[2], "wb"))==NULL) { 22 printf("出力ファイルを開くことができません\n"); 23 exit(1); 24 } 25 26 /* コピー元ファイルの終端に達する */ 27 fseek(in, 0L, SEEK_END); 28 loc = ftell(in); 29 30 /* ファイルを逆順にコピーする */ 31 loc = loc-1; /* ファイル終端マークから後退する */ 32 while(loc >= 0L) { 33 fseek(in, loc, SEEK_SET); 34 ch = fgetc(in); 35 fputc(ch, out); 36 loc--; 37 } 38 fclose(in); 39 fclose(out); 40 41 return 0; 42}
コピー元ファイルは aaa.txt
コピー先ファイルは bbb.txt
aaa.txtの内容は
abcdefghijklmnopqrstuv
wxyz0123456789
bbb.txtの内容は
9876543210zyxw
vutsrqponmlkjihgfedcba
です。僕の予想ではbbb.txtの内容は
9876543210zyxw
vutsrqponmlkjihgfedcba
だったのですが、実際はなぜか改行が1つ余計に増えてるように見えます。
この実行結果は正しいのでしょうか?
なぜ改行が1つ増えているのでしょうか?
お分かりの方がいれば教えていただければと思います。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/04 09:51 編集
2016/02/04 10:06
2016/02/04 10:31
2016/02/04 12:08 編集