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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-31
好用记得给个好评唷!!!
在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
域宽 指定输入数据所占宽度(列数)
第2个回答  推荐于2018-04-06
%c是逐个输入输出字符数组中的元素,
%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]);
}本回答被提问者和网友采纳
第3个回答  2008-08-24
用%c,你需要用循环逐个输出字符,%s只要写上数组名,就可以输出‘\0’前的所有字符。
第4个回答  2008-08-24
%c是用来输出字符的,%s是用来输出字符串的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网