我希望按功能在文本文件中添加程序计数行。它曾经工作,但现在总是返回0。 我做错了什么?
#include <stdio.h>
int couLineF(FILE* fp){ //count lines in file
int count = 0,ch;
while((ch = fgetc(fp)) != EOF){
if(ch == (int)"\n" ) count++;
}
rewind(fp);
return count;
}
int main(){
FILE *fp = fopen("book.txt","r");
int lines;
if(fp){
lines = couLineF(fp);
printf("number of lines is : %d",lines);
}
return 0;
}
还有其他方法可以获取文本文件中的行数吗?
答案 0 :(得分:3)
你的问题在这里:
if(ch == (int)"\n" )
您正在将"\n"
(一个字符串文字)的地址转换为int
并将其与ch
进行比较。这没有任何意义。
将其替换为
if(ch == '\n' )
修复它。这将检查ch
是否为换行符。(使用单引号('
)表示字符,双引号("
)表示字符串)
fclose
成功,则不使用fopen
关闭文件。\n
结尾,您的计划将不会计算最后一行。rewind(fp)
,因为您再也不会使用FILE
指针。