例如:
file_ptr=fopen(“data_1.txt”, “r”);
如何在文件中找到行数?
答案 0 :(得分:9)
您读取文件中的每个字符并添加换行符。
您应该查看fgetc()
来阅读某个字符,并记住它会在文件末尾返回EOF
,而\n
返回一个字符结束字符。
然后你必须决定最后一条不完整的行(即文件末尾没有换行符)是否为一行。我会说是的,我自己。
这是我如何做到的,当然是伪代码,因为这是作业:
open file
set line count to 0
read character from file
while character is not end-of-file:
if character in newline:
add 1 to line count
read character from file
对于此级别的问题,可能不需要扩展它以处理不完整的最后一行。如果 (或者您想尝试额外的积分),您可以查看:
open file
set line count to 0
set last character to end-of-file
read character from file
while character is not end-of-file:
if character in newline:
add 1 to line count
set last character to character
read character from file
if last character is not new-line:
add 1 to line count
不保证其中任何一个都能起作用,因为它们只是我的头脑,但如果他们没有,我会感到惊讶(这不是我见过的第一个或最后一个惊喜 - 测试得好。)
答案 1 :(得分:2)
这是一种不同的方式:
#include <stdio.h>
#include <stdlib.h>
#define CHARBUFLEN 8
int main (int argc, char **argv) {
int c, lineCount, cIdx = 0;
char buf[CHARBUFLEN];
FILE *outputPtr;
outputPtr = popen("wc -l data_1.txt", "r");
if (!outputPtr) {
fprintf (stderr, "Wrong filename or other error.\n");
return EXIT_FAILURE;
}
do {
c = getc(outputPtr);
buf[cIdx++] = c;
} while (c != ' ');
buf[cIdx] = '\0';
lineCount = atoi((const char *)buf);
if (pclose (outputPtr) != 0) {
fprintf (stderr, "Unknown error.\n");
return EXIT_FAILURE;
}
fprintf (stdout, "Line count: %d\n", lineCount);
return EXIT_SUCCESS;
}
答案 2 :(得分:1)
找到行计数是一些更复杂操作的第一步吗?如果是这样,我建议您在不知道行数的情况下找到一种操作文件的方法。
如果你的唯一目的是统计线条,那么你必须阅读它们......计数!