例如:
file_ptr=fopen(“data_1.txt”, “r”);如何找到文件中的行数?
发布于 2010-11-03 12:25:29
您读取文件中的每个字符,并将换行符相加。
您应该查看用于读取字符的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不能保证它们中的任何一个都会工作,因为它们就在我的脑海中,但如果它们不能工作,我会感到惊讶(但这不会是我见过的第一个或最后一个惊喜--好好测试一下)。
发布于 2010-11-03 12:50:00
这里有一种不同的方式:
#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;
}发布于 2010-11-03 12:25:17
查找行数是一些更复杂操作的第一步吗?如果是这样的话,我建议您找到一种方法来操作这个文件,而不需要事先知道行数。
如果您的唯一目的是计算行数,那么您必须阅读它们,并且...数数!
https://stackoverflow.com/questions/4084205
复制相似问题