我使用此代码允许使用输入变量的数值:
float day;
printf("Day?: ");
scanf("%f",&day);
如果用户没有输入“Day”的任何值,我怎么能让程序产生错误信息?
答案 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()
是另一种方法。