2017-05-08 78 views
2

繼承人我想從文件提取輸入並計算每行的字符數,但它停靠在第一線本身行爲龜etc的

#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來做到這一點? 我見過很多getc的回答,當遇到'\ n'時行爲不同,但他們似乎與我想要的太不一樣了。

回答

4

當最後一行在末尾沒有'\n'字符時,您的代碼無法正確處理這種情況。

這通常是通過一個條件在循環後處理:

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

+1是的,我意識到自己的錯誤,這工作,我也可以結束我的一個「\ n」文件(即打返回),我dint。 –