【问题标题】:How to check if it the input EOF(ctrl + D) in C如何检查它是否是C中的输入EOF(ctrl + D)
【发布时间】:2017-11-06 17:16:25
【问题描述】:

我要检查一下,我会在这段代码中输入 (ctrl +D)

char octets_array[octets_number][128];
  for(line_counter =0; line_counter < octets_number; line_counter++)


{
printf("Please enter octet: ");
scanf("%s",octets_array[line_counter]);
}

【问题讨论】:

  • scanf 返回成功扫描的项目数。
  • scanf 如果遇到一个则返回 eof,所以只需检查它的返回值
  • 您是否关心检查中的空白?

标签: c input eof


【解决方案1】:

scanf manual page 中所述,检查EOF 返回码:

{
    printf("Please enter octet: ");
    ret_code = scanf("%s",octets_array[line_counter]);
    if (ret_code == EOF)
        puts("Ctrl+D or other end of file");
    else
        puts("Thank you for the input");
}

如果标准输入被重定向到从文件中读取,scanf 将在尝试从文件中读取另一个单词失败后返回EOF

如果标准输入没有被重定向,当用户按下Ctrl+D(或Ctrlscanf将返回EOF +Zenter 在 Windows 上)。

注意:当它返回EOF时,输出变量octets_array中没有数据。它包含垃圾或以前的值;无论如何,不​​应该使用那里的数据。

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多