C语言中%c与%s的区别与划分详解
%c格式对应的是单个字符,%s格式对应的是字符串。
例:
?
|
1 2 3 4
|
char a;char b[20];scanf("%c",&a); //只能输入一个字符。scanf("%s",b); //可以输入一串不超过20字符的字符串。 |
%c对应类型为char, %s对应类型为char * , 即字符串.
用作输入时, 二者参数都要传char * 型.
%c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.
用作输出时, %c传char类型,输出一个字符. %s传char*类型参数, 输出到\0为止.
%c只能输出或输入一个字符,%s输出的是一串字符还有就是char a; string s;
输入的时候scanf("%c", &a);这里的&不能少
而scanf("%s",s);这里不能有&符号
转换说明符
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13
|
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)%c 字符%d 有符号十进制整数%f 浮点数(包括float和doulbe)%e(%E) 浮点数指数输出[e-(E-)记数法]%g(%G) 浮点数不显无意义的零"0"%i 有符号十进制整数(与%d相同)%u 无符号十进制整数%o 八进制整数 e.g. 0123%x(%X) 十六进制整数0f(0F) e.g. 0x1234%p 指针%s 字符串%% "%" |
补充知识:c语言中scanf("%c",&c)吃掉回车或者空格字符的问题
2`标志
左对齐:"-" e.g. "%-20s"
右对齐:"+" e.g. "%+20s"
3.格式字符串(格式)
?
|
1 2 3 4 5
|
〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型"%-md" : 左对齐,若m比实际少时,按实际输出。"%m.ns" : 输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n"%m.nf" : 输出浮点数,m为宽度,n为小数点右边数位"%3.1f" : 输入3852.99 输出3853.0 |
补充知识:c语言中scanf("%c",&c)吃掉回车或者空格字符的问题
我就废话不多说了,大家还是直接看代码吧~
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include<stdio.h>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)清除全部剩余内容*/ |
下面使用第二种方法
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include<stdio.h>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的输入方式的问题。
解决方法有两种:
第一:
char b;
int a;
将这两个变量的声明换一下,哈哈,以前老师说过。但我感觉着不是解决方法,如果还有其他的变量,这种方式是不是还会危害其他呢。
第二:
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include<stdio.h>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声明成字符创的形式,哈哈,这个好。。。。
结果为:

以上这篇C语言中%c与%s的区别与划分详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
也许是最全java资料!(文档+项目+资料)【点击下载】 和努力的人一起学习Java!
赞 (0)
