printf("hello2");
int i = 0;
int done = 0;
while (!done)
{
char c;
printf("hello3");
c = getc(stdin);
printf("hello4");
if (isspace(c))
{
done = 1;
ungetc(c, stdin);
printf("hello5");
}
}
所以我的程序当前正在尝试读入输入(在这种情况下,特别是空输入)。但是,在我发现我的程序不起作用之后,我尝试通过散布printfs来调试它,在我看来,在c = getc(stdin)
之后,程序停止工作了吗?如果我的理论是正确的,那么使用c = getc(stdin)
会有什么问题?
答案 0 :(得分:0)
你是否尝试过太空后击球?除非您做出具体安排,否则您的终端仿真或您运行程序的任何地方都不会为您提供键入的所有键盘字符。它将一直等到你输入,然后让你处理所写的整行。
答案 1 :(得分:0)
Stdin不会将输入字符刷新到输入流上,直到换行符'\ n'为止。所以getc(stdin)在你输入之前没什么可读的。如果要在不输入的情况下读取控制台输入,可以在Windows编译器提供的conio.h库中使用getch()函数。 getch()从stdin读取一个字符而不等待换行符。