c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题

您所在的位置:网站首页 c语言读取下一个字符 c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题

c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题

2024-07-09 23:57| 来源: 网络整理| 查看: 265

while(scanf("%d,%d",&a,&b)!=2)fflush(stdin); c=a+b; printf("%d+%d=%d",a,b,c); }

#include void main(){ int a; char b; printf("input a integer\n"); scanf("%d",&a); //这里需要吸收 回车符 下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用 printf("input a char\n"); scanf("%c",&b); printf("%d,%c\n",a,b); } /* (1)用getchar()清除 (2)用"%1s"来限制 (3)用格式串中空格或"%*c"来"吃掉" (4)用函数fflush(stdin)清除全部剩余内容 */ #include int main(){ int a; char b; printf("input a integer\n"); scanf("%d",&a); //这里需要吸收 回车符 下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用 printf("input a char\n"); scanf("%1s",&b); printf("%d %c\n",a,b); system("pause"); return 0; } 环境(dev c++)

测试结果

可以看出a的值异常了,为什么呢?

这应该和编译器有关系,因为%1s的输入方式的问题。

解决方法有两种:

第一:

[cpp]  view plain copy char b;   int a;   将这两个变量的声明换一下,哈哈,以前老师说过。但我感觉着不是解决方法,如果还有其他的变量,这种方式是不是还会危害其他呢。

第二:

[cpp]  view plain copy #include   int main(){         int a;    char b[2];           printf("input a integer\n");    scanf("%d",&a);    //这里需要吸收 回车符  下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用    printf("input a char\n");    scanf("%1s",&b);               printf("%d %c\n",a,b[0]);    system("pause");    return 0;       }   b声明成字符创的形式,哈哈,这个好。。。。

结果为:

 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3