我希望程序按函数计算文本文件中的行数。以前可以用,但是现在总是返回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;
}
<小时/>
另一个问题
还有其他方法可以获取文本文件中的行数吗?
最佳答案
您的问题在这里:
if(ch == (int)"\n" )
您正在将 "\n"
的地址(字符串文字)转换为 int
并将其与 ch
进行比较。这没有任何意义。
替换为
if(ch == '\n' )
修复它。这会检查 ch
是否为换行符。(使用单引号 ('
) 表示字符,使用双引号 ("
) 表示字符串)
- 如果
fopen
成功,则不使用fclose
关闭文件。 - 如果最后一行不以
\n
结尾,您的程序将不会计算最后一行。 - 绝对没有理由使用
rewind(fp)
,因为您再也不会使用FILE
指针。
关于C - 无法获取文本文件中的行数?还有其他方式获取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537728/