ファイル SORTED.txt を最初に使用して閉じた後、再度開いて読み取ります - 別のファイル UNSORTED.txt のすべての内容をコピーします。UNSORTED.txt からコピーした後、コピーした行数を (コピー プロセス中ではなく、別のプロセスとして) カウントしたかったのです。2 回目は fegtc() がファイル (SORTED.txt) の先頭を指していないようです。そのため、lines の値は初期化された 0 のままです。 fgetc() を考慮して、ファイルを閉じて再度開くことなく行われましたか?
助けてくれてありがとう。
乾杯!
f = fopen("./TEXTFILES/UNSORTED.txt", "w");
if (f == NULL){
printf("ERROR opening file\n");
return 100;
}
for (i=0; i<1000000; i++){
fprintf(f, "%d\n", (23*rand()-rand()/13));
}
fclose(f);
f = fopen("./TEXTFILES/UNSORTED.txt", "r");
if (f == NULL){
return 100;
}
s = fopen("./TEXTFILES/SORTED.txt", "w");
if (s == NULL){
return 101;
}
while(1){
j = getc(f);
if (j == EOF) break;
fputc(j, s);
}
fclose(f);
//Closed source file. Read number of lines in target file.
fclose(s);
s = fopen("./TEXTFILES/SORTED.txt", "w");
j = 0;
while(1){
j = fgetc(s);
if (j == EOF) break;
if (j == '\n') lines++;
}
fclose(s);
printf("\n%d\n", lines);