2013-04-08 57 views
-3

我想知道如果在我的程序中發生了什麼,我要求使用scanf("%d",&num)的整數輸入,並且用戶輸入一串字符和整數例如at3stf0rfun。 這種情況下num的價值是多少?它只需要整數30還是它也將字符轉換爲它的'ASCII十進制值?scanf並輸入字符

+2

你試過了嗎? – Fabien 2013-04-08 08:23:03

+1

試一下,找出自己的:) – Osiris 2013-04-08 08:23:32

+0

自己試一試它會傷害嗎? – mihai 2013-04-08 08:23:37

回答

4

掃描在遇到無效輸入時停止。因此,在您的代碼中,num的值將保持不變。

要檢測這是否發生了什麼,您需要檢查返回值scanf。引述man scanf

返回值

這些函數返回分配的輸入項目的數量。如果匹配 失敗,這可能會比規定的要少,甚至爲零。零表示雖然有可用的輸入,但是 沒有分配轉換; 通常這是由於無效的 輸入字符,如'%d'的字母字符 轉換。如果在發生任何轉換(如文件結尾)之前發生輸入故障 ,則會返回EOF值。如果在轉換開始後發生錯誤或 文件結尾,則會返回已成功完成的 轉換的數量。