我有一个功能,作为一个更大的程序的一部分,以确定在前一周的每一天销售的产品数量。这里是执行的情况下切换功能: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''和''''? –