|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 有奶就是娘 于 2023-1-17 01:07 编辑
- void add(){
- printf("okkkkcesh测试语句在此^-^\n");
- char a; //实现循环参数
- int b=1; //实现循环参数
- while(1)
- {
- if(b=1)
- {
- printf("测试语句也在此^-^\n");
- /** **/
- printf("请问是否需要继续循环^-^,y or n? ");
- scanf("%c",&a);
- if(a=='y')
- {
- b=1;
- }
- else
- {
- b=2;
- break;
- }
- }
- }
- }
复制代码
问题:第十二行的scanf没有运行,无法输入,导致我跳出了add函数。
我的单步调试,到了scanf也无法输入,跳过了scanf,运行完scanf后,a由默认值被直接赋值为ASCII码的10,就是换行符
- void add(){
- printf("okkkkcesh测试语句在此^-^\n");
- char a; //实现循环参数
- int b=1; //实现循环参数
- while(1)
- {
- if(b=1)
- {
- printf("测试语句也在此^-^\n");
- /** **/
- printf("请问是否需要继续循环^-^,y or n? ");
- scanf("%c",&a);
- getchar();
- if(a=='y')
- {
- b=1;
- }
- else
- {
- b=2;
- break;
- }
- }
- }
- }
复制代码
因为当你第二次用scanf()读入字符时,上一次输入的换行符‘\n’还留在stdin缓冲区里面,那scanf()就直接把换行符读入了
|
|