首页 > 解决方案 > 在 C 中计算 csv 和 txt 文件之间的行数问题

问题描述

我正在练习用 C 编程,我决定创建一个函数来计算文件中的行数,以便以后在创建矩阵时使用。当我为它提供不同的文件类型时,问题就出现了。我注意到,当我为函数提供一个 txt 文件时,它的计数比它需要的少一个,而 csv 正在计算正确的行数。

int countRows(char fileName[100]){
    FILE *fp;
    int nl = 1;
    char c;

    fp = fopen(fileName, "r");
    for (c = getc(fp); c != EOF; c = getc(fp)){
        if(c == '\n'){
            nl = nl + 1;
        }
    }

    fclose(fp);
    return nl;
}

假设我有一个 txt 文件作为

age name    score
15  jared   90
16  jerome  85
18  timmy   9

我希望输出 4 行。

标签: cstdio

解决方案


为了使算法正确,您应该编写一个类似的函数来计算字符串的行数。以下是一些测试用例:

  • ""有 0 行
  • "hello"有 1 行,虽然它没有任何\n字符
  • "\n"有 1 行
  • "hello\n"也有1行
  • "hello\n\n\n"有 3 行
  • "\ntext"有 2 行

您应该为这些测试用例编写自动测试。宏是一个简单而assert好的选择。

一旦您的算法涵盖了所有这些测试用例,它可能也适用于文件。


推荐阅读