[英]Return value EOF of scanf in C
C語言中的scanf,我對返回值有點困惑。
在說明中,它說:
首先,我不確定在第一次成功轉換之前或在發生匹配失敗之前是否到達輸入末尾是什么意思。 這怎么可能?
其次,我不確定讀取錯誤和匹配失敗之間的區別?
首先,我不確定在第一次成功轉換之前或在發生匹配失敗之前是否到達輸入末尾是什么意思。 這怎么可能?
想象一下,您正試圖從文件中讀取一個字符,而您正處於文件的末尾。 在任何成功的轉換或匹配嘗試發生之前,將到達輸入的末尾。
其次,我不確定讀取錯誤和匹配失敗之間的區別?
讀取錯誤意味着您無法從FILE
讀取數據。 的匹配失敗意味着你能讀取數據,但它並不匹配預期(例如,讀a
用於%d
。)
函數scanf()
返回成功讀取和轉換的字段數。 但是,如果我輸入 (Windows) Ctrl-Z
作為輸入,則表示EOF
。 在 Linux 中,我認為可能是Ctrl-D
? 因此,如果您沒有輸入有意義的值, scanf()
以一種或另一種方式指示失敗。
通常,您測試所需的輸入數量,這也將涵蓋EOF
情況。
if (1 != scanf("%d", &i))
printf ("No valid input\n");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.