我有一個功能,作爲一個更大的程序的一部分,以確定在前一週的每一天銷售的產品數量。這裏是執行的情況下切換功能:scanf()沒有返回正確的值?
unsigned int switchfn()
{
int productNumber; // product 1 through 5
// only while product 1 through 5 is being entered.
while ((scanf("%d", &productNumber)) != EOF) {
// gather product data
switch (productNumber) {
case '1': // product one
++productOne;
break;
case '2': // product two
++productTwo;
break;
case '3': // product three
++productThree;
break;
case '4': // product four
++productFour;
break;
case '5': // product five
++productFive;
break;
case '\n': // ignore new line
case '\t': // ignore tab
case ' ': // ignore space
break;
default: // catch all other characters
printf("%s", "No such product exists.");
puts(" Please enter a valid product number.");
break;
}
}
return 0;
}
然而,當程序運行時,它總是跳轉到默認,甚至通過5.輸入數字1時,這是一個問題,什麼scanf()函數將返回?
您應該檢查'== 1',而不是'!= EOF'。如果輸入的數字不是數字,該函數可能返回'0'。 –
一旦你有超過10種產品,你會怎麼做? –
@ M.M:你的意思是,輸入像''\ n'',''\ t''和''''? –