2017-05-08 6 views
2
は、相続人は、私は、ファイルからの入力を取り、各行の文字数をカウントするが、それは最初の行自体ここで

挙動が

#include<stdio.h> 
int main(){ 
FILE *instream; 
int c; 
char in; 
int linenum = 1; 
int charcount = 0; 
    if ((instream = fopen("in.txt","r+")) == NULL) { 
     printf("Unable to open file3\n"); 
     return(0); 
} 
while ((c = fgetc(instream)) != EOF){ 
if(c == '\n') { 

    printf("%3d: %d\n",linenum,charcount); 
    linenum++; 
    charcount = 0; 
} 

else{ 

     charcount++; 
    } 
} 

    fclose(instream); 
     } 

で停止コードがある

ファイル形式

abcdef 
mnopqr 

とOUTは

1: 6 

を置くしかし、私は期待していた

1: 6 
2: 6 

getcを使用してこれを行うにはどうすればよいですか? 「\ n」に遭遇したときにgetcが異なる動作をすることについて多くの回答が見られましたが、それらは私が望むものと大きく異なると思われます。

答えて

4

最後の行に最後に'\n'文字が含まれていないと、コードで正しく処理されません。

これは一般的にループした後、条件によって処理されます:

while ((c = fgetc(instream)) != EOF){ 
    ... 
} 
// Handle the last line: 
if (charcount != 0) { 
    printf("%3d: %d\n", linenum, charcount); 
} 
+0

+1はい、私はまた打つ、すなわち(「\ nを」と私のファイルを終了している可能性があり、これは動作しますが、私のミスを実現しました帰り)私はdint。 –