计数csv和txt文件之间的C行中的问题

时间:2019-02-18 04:33:24

标签: c stdio

我正在用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行。

1 个答案:

答案 0 :(得分:1)

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

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

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

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