C - 无法获取文本文件中的行数吗?还有其他方法可以获得吗?

时间:2015-04-09 11:50:05

标签: c file-io

我希望按功能在文本文件中添加程序计数行。它曾经工作,但现在总是返回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;

}

另一个问题

还有其他方法可以获取文本文件中的行数吗?

1 个答案:

答案 0 :(得分:3)

你的问题在这里:

if(ch == (int)"\n" )

您正在将"\n"(一个字符串文字)的地址转换为int并将其与ch进行比较。这没有任何意义。

将其替换为

if(ch == '\n' )

修复它。这将检查ch是否为换行符。(使用单引号(')表示字符,双引号(")表示字符串)

<小时/> 其他问题是:

  • 如果fclose成功,则不使用fopen关闭文件。
  • 如果程序没有以\n结尾,您的计划将不会计算最后一行。
  • 绝对没有理由使用rewind(fp),因为您再也不会使用FILE指针。