【问题标题】:Reading from a file从文件中读取
【发布时间】:2010-08-20 23:04:57
【问题描述】:

您好,我在读取文件时遇到问题,我正在尝试使用 fscanf() 从文件中读取,但我似乎无法解决。 我尝试逐行读取文件并将字符串放入变量(缓冲区)中,但我无法理解while循环的样子 提前致谢

我要读取的文件是一个具有以下格式的 txt 文件:第一行:“1234,abc,etc” 第二行:“2432,fjh,etc”以及更多我想要的行使用 fscanf 方法在每个循环中放入所有行,让我们在我的字符串变量中说“1234,abc 等”,依此类推,直到我没有更多的行可以读取

这是我目前收集到的(ofc 这不是正确的写法):

char* buffer[100]; 
while (fscanf(FILE *finput,"%s",buffer)!=something) 
{ 
    printf("%s",buffer); 
}

如果您能够纠正我的错误,我希望此代码能够打印我的代码中的所有行,我将非常感谢它

【问题讨论】:

  • 您愿意发布您目前拥有的代码吗?
  • 您可能还应该包含一些您尝试读取的数据的描述(或样本,或两者)。

标签: c file-io


【解决方案1】:

我觉得你应该先阅读其中一些很棒的主题:

Trouble reading a line using fscanf()

Reading file using fscanf() in C

fscanf multiple lines [c++]

您应该使用 fgets 或其他东西的原因有很多。

引用此place:

fscanf() 是一个面向字段的函数,不适合在强大的通用文本文件阅读器中使用。它有两个主要缺点:

  • 您必须提前知道输入文件的确切数据布局,并针对每个不同的布局重写函数调用。
  • 很难读取包含空格的文本字符串,因为 fscanf() 将空格字符视为字段分隔符。

如果您知道要读取的文件的大小,则可以使用 fread(),它是面向块的。

【讨论】:

  • 问题是当我使用 fgets 时,我在尝试读取空行时遇到错误
  • fgets() 将在遇到换行符时停止。我必须建议你看看这里:C 中的文本文件 - mrx.net/c/readfunctions.html
  • 问题是,当我使用 fgets 并且在我的文件末尾有一些空白行时,当我使用 linux 执行我的文件时,我得到了分段错误,即使我试图忽略它这行命令:if (strcmp(buffer,"\n")==0){continue;}
  • 最好显示一些源代码。我不认为这些人仅仅依靠他们的第六感就能帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 2017-06-28
  • 2012-05-15
  • 2016-06-18
  • 2013-03-05
  • 2016-08-02
  • 2012-06-29
相关资源
最近更新 更多