我正在用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行"hello"
有一条线,虽然它没有任何\n
字符"\n"
有1条线"hello\n"
也有1条线"hello\n\n\n"
有3条线"\ntext"
有2条线您应该为这些测试用例编写自动测试。 assert
宏是一个简单而好的选择。
只要您的算法涵盖所有这些测试用例,它就可能适用于文件。