本帖最后由 Love 梦想 于 2012-2-27 10:52 编辑
LZ 给你看看我的学习笔记:
2, 当连续使用两个以上scanf();函数时,它会无法中断程序等待输入 如: #include <stdlib.h> #include <stdio.h> int main() { char a,b,c; puts("请输入第一个"); scanf("%c",&a); puts("请输入第二个"); scanf("%c",&b); // 这个会直接忽略跳过 puts("请输入第三个"); scanf("%c",&c); printf("第一个【%c】\n第二个【%c】\n第三个【%c】\n",a,b,c); system("pause"); } 当我们输入第一个时,它就会直接忽略第二个scanf函数 跳到第三个scanf函数中断程序 实际上我们只输入了 两个数据 分别赋值给第一个和第三个变量 改进此问题可利用fflush(stdin); 此句代码功能是清除一个流,利用它来清空由第一个数值所带来的残留数据,改进代码: #include <stdlib.h> #include <stdio.h> int main() { char a,b,c; puts("请输入第一个"); scanf("%c",&a); puts("请输入第二个"); fflush(stdin); scanf("%c",&b); puts("请输入第三个"); fflush(stdin); scanf("%c",&c); printf("第一个【%c】\n第二个【%c】\n第三个【%c】\n",a,b,c); system("pause"); } 又或者加一个在%号之前加个空格来清除一个流 如: #include <stdlib.h> #include <stdio.h> int main() { char a,b,c; puts("请输入第一个"); scanf("%c",&a);//此处输入:I love you! puts("请输入第二个"); scanf(" %c",&b); // %号前面多了个空格 puts("请输入第三个"); scanf(" %c",&c); // %号前面多了个空格 printf("第一个【%c】\n第二个【%c】\n第三个【%c】\n",a,b,c); system("pause"); }
|