c语言中,%c和%s在输入和输出字符串的时候有什么区别?
输入:
1、赋值
%c输入函数只会对一个字节空间赋值,而%s会一直赋值,直到输入中遇到空白字符为止。
2、地址符
输入的时候scanf("%c", &a);这里的&不能少,而scanf("%s",s);这里不能有&符号。
输出:
1、长度
%c只能输出一个字符,%s输出的是一串字符,直到某一个字节内存的元素为字符'\0'时,输出此字符并且寻址结束。
扩展资料
转换说明符
1、%a(%A):浮点数、十六进制数字和p-(P-)记数法(C99)
2、%c:字符
3、%d:有符号十进制整数
4、%f:浮点数(包括float和doulbe)
5、%e(%E):浮点数指数输出[e-(E-)记数法]
6、%g(%G):浮点数不显无意义的零"0"
7、%i:有符号十进制整数(与%d相同)
8、%u:无符号十进制整数
9、%o八进制整数
10、%x(%X):十六进制整数0f(0F)
11、%p:指针
12、%s:字符串
13、%%:"%"
格式字符串
语法:〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型
"%-md" : 左对齐,若m比实际少时,按实际输出。
"%m.ns" : 输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
"%m.nf" : 输出浮点数,m为宽度,n为小数点右边数位
"%3.1f" : 输入3852.99 输出3853.0
在printf函数格式字符:
%d,i 以带符号的十进制形式输出整数(正数不输出符号)%i 可以以八进制 十六进制转换十进制形式 则%d不能转换,直接输出
%u 以无符号的十进制形式输出整数
%o 以八进制的无符号形式输出整数(不输出前导符0)
%x X 以十六进制无符号形式输出整数(不输出前导符0x),用小写x 则输出0~f 用大写X则输出0~F
%c 以字符形式输出,只输出一字符
%s 输出字符串
%f 以小数形式输出单,双精度数,隐含输出6位小数
%e E 以指数形式输出实数
%g G 选用%f 或者%e格式中输出宽度较短的一种格式
在printf 函数中用到的格式附加字符
l 长整型整数,可加在格式符d o x u前面 列如:%ld
m (代表一个正整数) 数据最小宽度
n(代表一个正整数) 对实数,表示输出 n 位小数,对字符串,表示截取的字符个数
— 输出的数字或字符在域内向左靠
在scanf 函数输入数据
%d i 输入有符号十进制数
%c 输入无符号十进制数
%o 输入无符号入进制数
%x X 输入无符号的十六进制整数(大小写作用相同)
%c 输入单个字符
%s 输入字符串 将字符串送到一个字符数组中,在输入时以非空白字符开始,结束是以第一个空白字符结束,字符串结束标志‘/0’作为其最后一个字符
%f 输入实数 可以用小数形式或者指数形式输入
%e E g G 与f作用相同,e 与f g 可以相替换(大小写作用相同)
在scanf 函数中用到的格式附加字符
l输入长整 形数据(可用%ld,%lo,%lx,%lu)double形数据%lf%le
h输入短整 形数据%hd%ho%hx
域宽 指定输入数据所占宽度(列数)
%s是字符数组作为整体输入输出。
看了下面的程序你就应该明白了:
1
# include <stdio.h>
void main()
{
char ch[8];
gets(ch);
printf("%s",ch);
}
2
# include <stdio.h>
void main()
{
int i;
char ch[8];
gets(ch);
for(i=0;i<8;i++)
printf("%c",ch[i]);
}