如何检查用户是否输入了输入

时间:2014-01-22 18:57:35

标签: c if-statement error-handling printf

我使用此代码允许使用输入变量的数值:

float day;
printf("Day?: ");
scanf("%f",&day);

如果用户没有输入“Day”的任何值,我怎么能让程序产生错误信息?

2 个答案:

答案 0 :(得分:1)

试试这个:

if(scanf("%f",&day) != 1)  
    printf("Error"); 

答案 1 :(得分:0)

使用fgets()/sscanf()

char buf[100];
fgets(buf, sizeof(buf), stdin);
if (sscanf(buf, "%f", &day) != 1) {
   if (buf[0] == '\n') 
     HandleNothingInput(); 
   else 
     HandleBadInput(); 
   }
}

fgets()通常会读取,直到输入 Enter '\n'为止。通过使用sscanf()解析缓冲区,空输入(“用户未输入任何值”),很容易检测到错误输入(“abc”),因为scanf()将为0。


替代方案:如果您想确保没有输入其他数据,可以使用哨兵:

int ch;     
if (sscanf(buf, "%f %c", &day, &ch) != 1) {

atof()是另一种方法。