【问题标题】:Counting numbers in a file, in C用 C 计算文件中的数字
【发布时间】:2017-04-25 22:25:28
【问题描述】:

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

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,如预期的那样。知道为什么会这样吗? 谢谢

【问题讨论】:

  • 或关闭它并以阅读模式重新打开

标签: c file int


【解决方案1】:

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

写完,读之前,用fseek(f1, 0, SEEK_SET);找开头

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      相关资源
      最近更新 更多