计算文本文件中的行数c [复制]

这个问题在这里已有答案:

int count;
char c;
FILE *f = fopen("example.txt", "r");
if (f != NULL) {
    for(;;) {
        c = getc(f);
        if(c == '\n') {
            count++;
        }
        if(c == EOF) {
            count++;
            break;
        }
    }
    std::cout << count  << " in file" << '\n';
}

我试图计算我的文件“example.txt”中的行数,但每次运行时它返回一个超过32000的数字,不知道为什么 .

回答(2)

2 years ago

您没有将 count 变量初始化为零 . 看看这个例子 - 我认为它更像是一种方式:

#include <fstream>
#include <iostream>

int main()
{
    char ch;
    unsigned int count = 0;
    std::fstream f("file.txt");
    if(f.is_open())
    {
        while(f.get(ch))
            if(ch == '\n')
                ++count;
        ++count; //last line don't have '\n'
    }
    std::cout << count << " in file" << '\n';
}

如果您需要查找非空行数(而不是'\ n'字符数),请尝试以下方法:

#include <fstream>
#include <iostream>
#include <string>

int main()
{
    unsigned int count=0;
    std::string s;
    std::fstream f("file.txt");
    while(f >> s)
        ++count;
    std::cout << count << " in file" << '\n';
}

2 years ago

在代码中初始化count = -1 .

int count = -1;
char c;
   FILE *f = fopen("example.txt", "r");
   if (f!=NULL){
     for(;;){
     c = getc(f);
        if(c== '\n'){
           count++;
        }
        if(c== EOF){
           count++;
           break;
        }
    }
    std::cout<<count  << " in file"<< '\n';
  }