在csv和txt文件之间计算C中的行时出现问题

问题描述 投票:0回答:1

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

c stdio
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.