[英]Return EOF from SCANF
我仍然不明白scanf
如何返回EOF
值。 程序運行在 window 中。
從scanf
描述:
“如果在第一次轉換(如果有)完成之前發生輸入故障,scanf function 將返回宏 EOF 的值。否則,scanf function 返回分配的輸入項的數量,可能少於提供的數量,甚至零,在早期匹配失敗的情況下。”
代碼是
int main()
{
int status,a1,a2,b1;
char str1[100];
b1=EOF;
printf("b1=%d\n",b1);
printf("Enter input\n");
status=scanf("%d%d",&a1,&a2);
printf("status=%d",status);
return 0;
}
案例1輸入:
hello
output
status=0
案例2輸入:
^z (press CTRL-Z)
output
staus=-1
萬一是第一次轉換前的輸入失敗? 如果是第一次轉換前的輸入失敗,為什么scanf返回0。
在案例 2 中,我按 CTRL-Z 第一次輸入,然后 scanf 返回 -1,所以 scanf 返回 EOF 的唯一方法是按 CTRL-Z?如果不是,請用示例代碼解釋我
scanf
邏輯相當簡單。 它返回:
EOF
。EOF
如果只有在錯誤或文件結尾之前的前導空白字符可以讀取%c
、 %s
或掃描集以外的轉換(因為前導空白不是這些轉換的一部分。0
。1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.