为什么 scanf() 在循环后不起作用?

why does scanf() not work when followed by a loop?

当我在下面的代码中输入一个字符串时,程序没有继续运行。它只是让我继续打字并按回车键而没有任何效果。为什么会发生这种情况,我该如何解决。

#include <stdio.h>

main() {

char str[20];
int aaa = 0;
int exit;

printf("Enter anything: ");
scanf("%s", str);

while(aaa == 0) {
  if(str[3] == 'a') {
    aaa++; } 
  else {
    scanf("%d", &exit);
    if(exit == 3) {
      aaa++; } } }

printf("%s\n", str);

}

日志:

Enter anything: 2/3/4444
Now
it
just
lets
me
keep
on
typing

编辑:我解决了它,但我对它的简单性感到有点尴尬。我知道人们一直试图向我解释这一点,但用我自己的话来说,这就是正在发生的事情:当满足进入 while 循环的条件时,程序将进入 while 循环。但是,除非为 scanf 输入的输入满足循环中的条件之一,否则程序无法离开循环,因此会卡住。基本上我只是缺少解决这个问题的 else 语句。

在第四个字符不是 a 的字符串之后,您的程序读取一个整数。在第一次读取之后,它永远不会尝试读取除整数以外的任何内容。因此,您必须 不能在第一个字符串后输入除整数以外的任何内容。

如果您希望您的程序处理字符串后的非整数,您需要添加代码来实现。您目前有 none.