【发布时间】:2019-11-16 22:07:26
【问题描述】:
我的程序中的 scanf 和输入缓冲区有问题。
首先我要求用户输入:
char someVariable;
printf("Enter text: ");
scanf(" %c",&someVariable);
然后我有一个循环,在 scanf 中一次遍历一个字符,直到它到达 \n。 问题是循环完成后,不知何故,缓冲区中仍有一些东西,所以这个函数(在循环中被调用)再次被调用并破坏了我程序中的逻辑。
如何强制清除输入缓冲区?
我只能使用scanf(作业要求)
void checkType(){
char userInput;
char tempCheckInput;
printf("Enter Text: ");
scanf(" %c",&userInput);
while (userInput != '\n'){
tempCheckInput = userInput;
scanf("%c",&userInput);
忽略循环的结尾,这是我得到输入的部分
【问题讨论】:
-
向我们展示代码,请参阅minimal reproducible example。
-
@user3386109 这是一个很长的程序,所以我不想复制超过 100 行,我会在一秒钟内编辑帖子
标签: c scanf input-buffer