一直在学习 发表于 2021-3-8 23:05:01

关于scanf函数

本帖最后由 一直在学习 于 2021-3-8 23:06 编辑

#include<stdio.h>
int main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);//ab
printf("%c%c\n",a,b);//ab
scanf("%c %c",&c,&d);//a b
printf("%c%c",c,d);//ab
}
运行结果为:
ab
ab
a b

a请按任意键继续. . .
在第二个地方输入 a空格b回车 后,输出很奇怪??

#include<stdio.h>
int main()
{
char a,b,c,d;
//scanf("%c%c",&a,&b);//ab
//printf("%c%c\n",a,b);//ab
scanf("%c %c",&c,&d);//a b
printf("%c%c",c,d);//ab
}
当把第一个输入去掉后,输入 a空格b回车 后,就正常了

VS2010

ba21 发表于 2021-3-8 23:49:06

scanf你输入"ab回车"
在系统看来你输入的就是"ab\n"
#include<stdio.h>
int main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);//ab

// 去掉scanf 余留下的 \n
while(getchar() != '\n')
        continue;
printf("%c%c\n",a,b);//ab


scanf("%c %c",&c,&d);//a b
// 去掉scanf 余留下的 \n
while(getchar() != '\n')
        continue;

printf("%c%c",c,d);//ab
}

yuedong 发表于 2021-3-9 01:14:47

这样也行,原因就是楼上说的

#include<stdio.h>
int main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);//ab
printf("%c%c\n",a,b);//ab
getchar();
scanf("%c %c",&c,&d);//a b
printf("%c%c\n",c,d);//ab
}
页: [1]
查看完整版本: 关于scanf函数