2
我需要驗證scanf函數參數 例如驗證scanf函數參數
if (scanf("%c,%f,%f", &ch, &p1, &p2) != 3)
// How can I tell which parameter failed?
// If I want to output message such as "Second parameter must be a real nubmer".
我需要驗證scanf函數參數 例如驗證scanf函數參數
if (scanf("%c,%f,%f", &ch, &p1, &p2) != 3)
// How can I tell which parameter failed?
// If I want to output message such as "Second parameter must be a real nubmer".
scanf
將盡快第一個遇到的符號不匹配的格式說明符停止掃描。所以如果你的scanf
返回1,那麼只解釋第一個格式參數。
switch (scanf("%c,%f,%f", &ch, &p1, &p2)) {
case 0:
// no parameters were parsed successfully
case 1:
// only first parameter succeeded
case 2:
// only the first two parameters succeeded
case 3:
// all three parameter succeeded
default:
// error
}
另請注意,小於最大成功解析數的返回值也可能表示出現錯誤。在這種情況下,您應該諮詢ferror()
。