Cで以下のようなプログラムを書きました.
"test.txt"を開いて,各行の先頭が'\n'になっている行が全部でいくつあるか数えることを目的にしてます.
test.txtの中身ですが,一番最後に連続して\n\nとあるのですがこの一番最後の\nがどうもカウントされないのです.
このtest.txtだと,ABCDの次の\n1つ, Helloの次の\n1つ,Worldの次の\n2つの合計4個で出力がLF=4となるのを期待していたんですけど,LF=3でした.
なぜ最後の改行文字は無視されるのでしょうか?
C
1#include <stdio.h> 2#include <string.h> 3 4int main(int argc, const char * argv[]) { 5 FILE *fp; 6 char buf[256]; 7 int cnt = 0; 8 9 fp = fopen("test.txt", "r"); 10 while (fgets(buf, sizeof(buf), fp) != NULL) { 11 if (buf[0] == '\n') cnt++; 12 } 13 14 fclose(fp); 15 printf("LF=%d\n", cnt); 16 return 0; 17}
"test.txt"の内容です abcd ABCD Hello World
"od -c test.txt" 0000000 a b c d \n A B C D \n \n H e l l o 0000020 \n \n W o r l d \n \n 0000031
回答2件
あなたの回答
tips
プレビュー