用C计算文件中的行数
Counting number of lines in the file in C
我正在编写一个函数来读取给定行中的行数。某些文本文件可能不以换行符结尾。
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;
}
现在函数没有正确计算行数,但我想不出问题出在哪里。非常感谢您的帮助。
fgets()
读取到换行符或缓冲区已满
char buf[200];
while(fgets(buf,sizeof(buf),fileHandle) != NULL)
{
count++;
}
fgetc()
在这里是一个问题,因为您首先遇到 EOF
并退出 do while
循环并且从未遇到 \n
字符,因此最后一行的计数保持不变在你的 file.If 中,你的文件中恰好有一行 count
将是 0
这是另一个选项(除了跟踪 EOF 之前的最后一个字符)。
int ch;
int charsOnCurrentLine = 0;
while ((ch = fgetc(fileHandle)) != EOF) {
if (ch == '\n') {
count++;
charsOnCurrentLine = 0;
} else {
charsOnCurrentLine++;
}
}
if (charsOnCurrentLine > 0) {
count++;
}
我正在编写一个函数来读取给定行中的行数。某些文本文件可能不以换行符结尾。
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;
}
现在函数没有正确计算行数,但我想不出问题出在哪里。非常感谢您的帮助。
fgets()
读取到换行符或缓冲区已满
char buf[200];
while(fgets(buf,sizeof(buf),fileHandle) != NULL)
{
count++;
}
fgetc()
在这里是一个问题,因为您首先遇到 EOF
并退出 do while
循环并且从未遇到 \n
字符,因此最后一行的计数保持不变在你的 file.If 中,你的文件中恰好有一行 count
将是 0
这是另一个选项(除了跟踪 EOF 之前的最后一个字符)。
int ch;
int charsOnCurrentLine = 0;
while ((ch = fgetc(fileHandle)) != EOF) {
if (ch == '\n') {
count++;
charsOnCurrentLine = 0;
} else {
charsOnCurrentLine++;
}
}
if (charsOnCurrentLine > 0) {
count++;
}