• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C语言中%c与%s的区别与划分详解

c语言 搞代码 4年前 (2022-01-06) 62次浏览 已收录 0个评论

这篇文章主要介绍了C语言中%c与%s的区别与划分详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

%c格式对应的是单个字符,%s格式对应的是字符串。

例:

 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);这里不能有&符号

转换说明符

 %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(%<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码网</strong>X)    十六进制整数0f(0F)  e.g.  0x1234 %p       指针 %s       字符串 %%       "%"

补充知识:c语言中scanf(“%c”,&c)吃掉回车或者空格字符的问题

2`标志

左对齐:”-” e.g. “%-20s”

右对齐:”+” e.g. “%+20s”

3.格式字符串(格式)

 〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型 "%-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)吃掉回车或者空格字符的问题

我就废话不多说了,大家还是直接看代码吧~

 #include 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)清除全部剩余内容 */

下面使用第二种方法

 #include 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;

将这两个变量的声明换一下,哈哈,以前老师说过。但我感觉着不是解决方法,如果还有其他的变量,这种方式是不是还会危害其他呢。

第二:

 #include 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的区别与划分详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C语言中%c与%s的区别与划分详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址