我正在用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行。
答案 0 :(得分:1)
要正确使用算法,您应该编写一个类似的函数来计算字符串的行数。这是一些测试用例:
""
有0行"hello"
有1行,尽管它没有任何\n
字符"\n"
有1行"hello\n"
也有1行"hello\n\n\n"
有3行"\ntext"
有2行您应该为这些测试用例编写自动测试。 assert
宏对此是一个简单而不错的选择。
只要您的算法涵盖了所有这些测试用例,它就可能也适用于文件。