我使用scanf("%llu%c", &myUnsignedLong, &checkerNewLine)
來驗證數字>0 && <2^64
,其中checkerNewLine
用於清除緩衝區,如果有人試圖插入一個字母(while (getchar() != '\n');
)。爲什麼scanf llu不驗證%llu?
但是,如果我嘗試插入一個負數,如-541231
,scanf
成功並返回2(作爲參數匹配的數量)。很明顯,myUnsignedLong
中存儲的號碼是2^64-541231
,但這不是我的意圖。
任何簡單的方法來解決這個問題?非常感謝
那麼你的意圖是什麼? – haccks
@haccks據推測,OP預計'scanf(「%llu」)將無法解析負數,並會返回一個錯誤。 – pburka