【发布时间】:2020-05-06 04:41:24
【问题描述】:
我有一个程序,只要输入的字符是“y”,它就会继续循环,但我的代码在执行一次 do-while 循环后退出。
int main()
{
char cont;
do {
printf("Would you like to continue (y/n)?: ");
scanf_s("%c", &cont, sizeof(cont));
} while (cont == 'y');
}
这将按一次按键,然后退出或继续,如预期的那样,但随后立即退出,无需等待更多按键。
【问题讨论】:
-
这是一个很好的例子,说明为什么不鼓励使用
scanf进行用户输入。读取一行输入时,使用 line-oriented 输入函数,如fgets()或 POSIXgetline(),然后是char buf[128]; do printf("continue (y/n)?: "); if (!fgets (buf, sizeof buf, stdin)) { puts ("(user canceled input)"); return 1; }; } while (*buf == 'y');