【发布时间】:2015-04-20 15:16:38
【问题描述】:
我正在编写一个函数来读取给定行中的行数。某些文本文件可能不以换行符结尾。
int line_count(const char *filename)
{
int ch = 0;
int count = 0;
FILE *fileHandle;
if ((fileHandle = fopen(filename, "r")) == NULL) {
return -1;
}
do {
ch = fgetc(fileHandle);
if ( ch == '\n')
count++;
} while (ch != EOF);
fclose(fileHandle);
return count;
}
现在该函数无法正确计算行数,但我无法弄清楚问题出在哪里。非常感谢您的帮助。
【问题讨论】:
-
" 没有正确计算行数" - 详细说明....
-
当有1行文件时,函数返回0。
-
如果只是在没有尾随换行符的情况下您偏离了 1,您将需要跟踪前一个字符是什么(例如 EOF 之前的字符),如果是则加 1不是换行符。