我想写代码,如果用户输入正确的输入,检查,即1
,2
,3
或4
.否则,将打印消息"输入错误".例如,如果用户输入一个字母,由于输入变量scanf
是char
类型,它也可以.但是在多个字符的情况下,我通过以下解决方案:我尝试将所有字符输入到char
数组中并检查有多少成员.我写了以下代码:
char option; int countIn; char inArray[10]; do { //while option!=4 scanf("%c", &option); while (countIn < 10 && scanf("%c", &option) != -1 && option != '\n') { inArray[countIn] = option; countIn++; } if (countIn > 1) { option = 10; } else { option = inArray[0]; } countIn = 0; } while (option != '4');
问题是,当我输入1
例如,程序运行良好,但对于第二次循环迭代,scanf
它不起作用,程序会1
一次又一次地自动执行该部分.
我做错了什么?
将以下两个scanf()
电话替换为
scanf(" %c", &option);
请注意格式字符串中的空格,它告诉scanf使用所有空格.它似乎跳过的原因是前一个输入在输入缓冲区中留下的换行符.
来自scanf()
:
· A sequence of white-space characters (space, tab, newline, etc.; see isspace(3)). This directive matches any amount of white space, including none, in the input.
请注意,尽管EOF
通常被定义为-1
,但假设这样做并不安全.我强烈建议用EOF
而不是-1
.