【发布时间】:2016-01-01 21:39:52
【问题描述】:
如果没有初始化 ("mod=0") ,此代码将进入无限循环。 我不明白为什么这段代码会循环,即使我使用 getchar(); 擦除缓冲区。 当我先输入“1”,然后输入“a”时,就会出现无限循环。 任何人都可以帮助我了解这种情况吗?
int main()
{
srand((unsigned)time(NULL));
int mod = 0;
int val = 0;
do {
printf("\t-----------------------------\n");
printf("\t|%5s %5s %5s %5s|\n", "1.create", "2.modify", "3.print", "4.quit");
printf("\t|%15s","Input command : ");
scanf("%d", &mod);
printf("\t-----------------------------\n");
switch (mod){
case 1: random(); val++; break;
case 2: if(val != 0) { modify(); break; }
case 3: if(val != 0) { print(); break; }
default: getchar(); printf("\tUnknown Command!! Retry!! \n"); break;
}
} while (mod != 4);
}
我用 Visual Studio 2015 编译了这段代码。
【问题讨论】:
-
在
scanf之后添加一个print语句只是为了验证事情是否符合您的预期,或者附加一个调试器。 -
出于好奇,您为什么输入
char而变量是int?
标签: c switch-statement scanf