在C语言中从文本文件中读取整数值

35

我有一个文本文件,其中包含以下三行:

12 5 6
4 2
7 9
我可以使用 fscanf 函数读取前三个值并将它们存储在三个变量中。但是我无法读取其余部分。 我尝试使用 fseek 函数,但它只适用于二进制文件。
请帮助我将所有值存储在整数变量中。

4
如果您发布您的尝试并解释其中失败的部分,您可能会得到更有用的答案。 - caf
fseek()在文本文件上运行良好,但不清楚为什么需要使用它来读取您展示的数据。 - Jonathan Leffler
2个回答

60
一个使用 fscanf 的简单解决方案:
void read_ints (const char* file_name)
{
  FILE* file = fopen (file_name, "r");
  int i = 0;

  fscanf (file, "%d", &i);    
  while (!feof (file))
    {  
      printf ("%d ", i);
      fscanf (file, "%d", &i);      
    }
  fclose (file);        
}

2
@Jonathan Leffler 是的,但是这是有意为之的。 - Vijay Mathew
3
使用这种方法,您不会打印最后一个值。删除第一个 fscanf 并将 printf 放在 fscanf 下面。 - KKKKK

9
这个怎么样?
fscanf(file,"%d %d %d %d %d %d %d",&line1_1,&line1_2, &line1_3, &line2_1, &line2_2, &line3_1, &line3_2); 

在这种情况下,fscanf中的空格会匹配任何空格的多个出现,直到找到下一个标记为止。

3
值得一提的是,你/他应该检查从fscanf()返回的结果是否为7,否则就意味着出了问题。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接