【问题标题】:second fgets() after fputs() doesn't wait for inputfputs() 之后的第二个 fgets() 不等待输入
【发布时间】:2014-03-27 17:22:51
【问题描述】:

为什么 fputs() 之后的 fgets() 不等待以下 c++ 代码中的输入?

int main(int argc, char ** argv) {
    const char * fileName = "test.txt";
    const int maxStringSize = 1000;
    FILE * file = fopen(fileName, "W");
    char s[maxStringSize];
    fgets(s, maxStringSize, stdin);
    fputs(s,file);
    fgets(s, maxStringSize, stdin);
    fclose(file);
    return 0;
}

感谢您的帮助。

【问题讨论】:

  • 我想我们需要知道输入是什么样子才能回答这个问题......另外,我不确定fopen() 的“W”标志应该是什么......
  • 很棒的评论!我用 w 替换了大写 W,问题就解决了。感谢您的仔细考虑。

标签: c++ c++-standard-library


【解决方案1】:

您列出的内容在我看来还不错,但需要检查几件事...

如果出现以下情况,第二个 fgets 调用将立即返回:

  1. 已到达输入末尾(例如,stdin 来自一个只有一行的文件)。
  2. 输入的第一行(包括换行)超过 999 个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2017-03-13
    • 2017-07-07
    • 2022-11-10
    • 2022-06-13
    相关资源
    最近更新 更多