首页 文章

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

提问于
浏览
-4

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

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

    您没有将 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';
    }
    
  • 0

    在代码中初始化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';
      }
    

相关问题