计算文件中的数字,用C表示

时间:2017-04-25 22:25:29

标签: c file int

我正在尝试计算文本文件中的数字数量。我有以下代码:

FILE *f1;
char pathname[4096];
snprintf(pathname, 4095, "%s%d%s\n", "Key_", 2, ".txt");

if( ( f1 = fopen(pathname, "w+") ) == NULL )
    perror("fopen");

for(int i = 0; i<20; ++i)
    fprintf(f1, "%d\n", i+1);

int sum = 0;
int num;
while( fscanf(f1, "%d", &num) != EOF )
    ++sum;

printf("number of numbers: %d\n", sum);

此代码表示文件中的数字为零。但是,如果我关闭文件流并重新打开它,则总和将为20,如预期的那样。知道为什么会这样吗? 感谢

2 个答案:

答案 0 :(得分:0)

在您再次从头开始阅读之前,您需要使用fseek重置文件中的当前位置:fseek(f1, 0, SEEK_SET);

答案 1 :(得分:0)

发生读取的文件指针与写入共享。由于w+创建新文件或截断现有文件,因此文件开头为空。当您写入文件时,文件指针向前移动并始终指向文件末尾。现在,当你在那个位置阅读时,你会立刻点击EOF。

写完之后,在阅读之前,请先找fseek(f1, 0, SEEK_SET);

开头