【问题标题】:How do I check if the line is over?如何检查线路是否结束?
【发布时间】:2015-01-25 23:05:29
【问题描述】:

我今天遇到了一个问题。我找不到一种方法来检查文件中的一行是否结束并且是否已经从下一个中读取了单词。我使用 fscanf 从文件中逐字读取,然后根据需要处理该单词并将其打印到另一个文件中,但出现了问题。

例如我的数据文件是:

Hello, how are you
doing?

结果文件显示:

Hello, how are you doing?

但我需要这些词与我从中提取它们的行保持一致。请记住,我需要这些词一个一个,这就是为什么我不使用getline()

这是我如何从文件中读取单词的代码:

while( fscanf(file, "%s", A) != EOF )
        {
            check(A, B, &a); // I edit the words and put them in B string
                             // which is printed to the write file
        }

感谢您的任何提示!

【问题讨论】:

  • 使用getline,然后对这些线条做任何你想做的事情——如果你愿意的话,一个一个地从它们中取出单词。

标签: c string file line scanf


【解决方案1】:

您可以改用简单的逻辑,例如匹配 .? 这样的字符串,通常会结束行。

【讨论】:

  • 我怀疑这会起作用,因为可以存储在文件中的文本类型是完全随机的,无法预测,但感谢您的回复!
【解决方案2】:

getline()fgets()将该行读入字符串,然后使用sscanf从该字符串中取出单词。

【讨论】:

  • 感谢您的输入,看来这是要走的路:)
【解决方案3】:

您需要通过添加检查来检查行尾。 因为换行符表示换行符,即'\n'。所以在while循环中,而不是复制整个事情,在检查'\n'的帮助下逐行进行

【讨论】:

  • 我已经尝试过了,但是它没有成功(很可能是因为我逐字读取文件而不是整行)并且完全使程序崩溃。感谢您的意见!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多