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