【问题标题】:Reading a string from file in C从C文件中读取字符串
【发布时间】:2014-02-16 09:29:40
【问题描述】:

我最近学习了如何在 C 中使用 I/O 文件,我的书中的一个练习要求我读取成对的数字行并将它们相加,然后将它们打印到输出文件中。

我的意思是:

如果输入文件看起来像:

12 13
24 26
23 13

输出文件将是:

25
50
36

我尝试将其作为字符串读取:

fscanf(in, "%s", &string); //in is the input file pointer

但它不起作用(导致段错误)

我的问题是我无法使用 fscanf 函数接收成对的数字行,因为我不知道输入文件中有多少行。

因此,我的问题是:如果我不知道有多少行,我如何读取包含大量行的输入文件?我可以将其作为字符串读取吗?

先谢谢你了。

迈克尔

【问题讨论】:

  • 我们无法调试或修复我们看不到的代码。
  • 您在循环中逐行读取文件,直到到达文件末尾(eof 函数)。
  • 提示:您不需要知道确切的行数,只需读取一行,处理并重复直到 EOF。
  • @DavidSchwartz 我只是想知道如何使用 scanf 获取一定数量的行
  • @StefanoSanfilippo 谢谢,我会考虑提示

标签: c string file-io int


【解决方案1】:

这是一些工作代码:

#include <stdio.h>
#include <conio.h>

main()
{
int a,b; 
FILE *fp = fopen("filename.txt", "r"); //open file for reading
FILE *f  = fopen("file.txt", "w");     //open file for writing

while (!feof (fp))                     //reading file until end of file
{
  fscanf (fp, "%d", &a);  
  fscanf (fp, "%d", &b); 
  int sum = a + b;
  fprintf(f, "%d\n", sum);  //writing summation to a file
}

fclose(f);  //close files 
fclose(fp);        
return 0;
}

只需创建 filename.txt 并在其中写入数字。并创建空白文件.txt。

【讨论】:

  • 您期望feof 预测未来并告诉您未来的读取是否会成功。它不能那样做。
  • 作为@DavidSchwartz,这种获取数字集的方法不起作用
猜你喜欢
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多