我在一个程序中通过 scanf 过滤了输入。我想要只读数字和大字母+空格。
最近我试图做类似的事情,它陷入了一个无限循环,仍然只打印第一个输入。我知道fgets()
,但我知道这行得通。我找不到问题出在哪里。这是简化的情况;我是怎么了?
#include <stdio.h>
#include <string.h>
int main()
{
char str[21];
do
{
scanf("%20[0-9A-Z ]", str);
printf("%s\n", str);
} while(strcmp("END", str) != 0);
return 0;
}
编辑:我忘了提,输入是有效的,对于输入:“HELLO”程序卡住了......并且scanf
仅在第一次输入时返回 1,对于其他人返回 0。我也尝试过fflush(stdin)
,阅读后......