关于C语言中%c的问题

如题所述

第1个回答  2019-07-07
“如果把scanf的两个%c之间加个空格再输入a空格b就会输出完整的ab了”,经测试,此时输入ab,照样可以输出ab,如果把scanf的两个%c之间加任意个数的空格,输入时无论ab间无空格还是有任意数量的空格,都会照样输出ab,下面是我再网上找来的一段说明:
5、
在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例如:scanf("%c%c%c",&a,&b,&c);
输入为:
d
e
f
则把'd'赋予a,
'
(空格)'赋予b,'e'赋予c。因为%c
只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把'
'/为下一个字符送给b。
只有当输入为:def
时,才能把'd'赋于a,'e'赋予b,'f'赋予c。
如果在格式控制中加入空格作为间隔,如
scanf
("%c
%c
%c",&a,&b,&c);则输入时各数据之间可加空格。
我们用一些例子来说明一些规则:
#include
<stdio.h>
void
main()
{
char
a,b;
printf("input
character
a,b\n");
scanf("%c%c",&a,&b);
/*注意两个%c之间没有任何符号*/
printf("%c%c\n",a,b);
}
由于scanf函数"%c%c"中没有空格,输入M
N,结果输出只有M。而输入改为MN时则可输出MN两字符,见下面的输入运行情况:
input
character
a,b
MN
(你输入的值)
MN
(屏幕上显示的值)
#include
<stdio.h>
void
main()
{
char
a,b;
printf("input
character
a,b\n");
scanf("%c
%c",&a,&b);
/*注意两个%c之间有个空格*/
printf("\n%c%c\n",a,b);
}本例表示scanf格式控制串"%c
%c"之间有空格时,
输入的数据之间可以有空格间隔。本回答被提问者采纳
相似回答