关于c语言字符型

字符型与字符串有区别吗?#include<stdio.h>main(){chara[10];inti;scnaf("%s",&a[10]);for(i=0;i<10;i+... 字符型与字符串有区别吗?
#include <stdio.h>
main()
{char a[10]; int i;
scnaf("%s",&a[10]);
for(i=0;i<10;i++)
printf("%c"a[i]);(如果把他换成printf("%s",a[i]);为什么不能编译?)

}
展开
 我来答
s903s
推荐于2018-03-28 · TA获得超过2179个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:0
展开全部
关于printf("%c"a[i]);(如果把他换成printf("%s",a[i]);为什么不能编译?
回答: 编译应该没问题, 只是运行时必定错误.

字符串指一串连续的字符型的存储域. C语言的字符串在操作时一般以0值字符标志字符串的尾字符(占一个字符的存储域,但不计入字符串长度).

"%c"应该对应于字符型变量(当然字符串中的一个字符也可以);"%s"应该对应于一个指向字符串的指针变量.执行printf("%s",a[i]);时, 程序把字符a[i]的值作为字符串指针来使用,当然就发生错误了. 如果写成printf("%s",a)甚至printf("%s",&a[2])都是正确的.

另外, 用"%s"不用使用for循环, 一个printf("%s",a)即可输出一个以空字符(0)结尾的字符串; 而用for循环加printf("%c",a[i])的方式, 则是以字符方式输出a这个字符数组中全部10个字符, 即使这些字符不构成以空字符(0)结尾的字符串.

由此看来字符串必定是字符数组, 而字符数组里存储的不一定是字符串. 字符数组里每一个元素都可以取-128~127的值, 无符号字符数组里每一个元素都可以取0~255的值. 而C语言中的字符串所取的值是以0标志结束的一串非零字符(即-128~-1, 1~127; 对应于无符号字符是1-255; 大多在可打印字符和有限的控制字符范围内取值).
kanerry
2006-09-26 · TA获得超过869个赞
知道大有可为答主
回答量:3998
采纳率:0%
帮助的人:2512万
展开全部
你想要做的是
一次性读进全部字符存入a
然后显示把

那么如下就行:
char a[10]; int i;
scanf("%s",a);
printf("%s",a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b07dccf
2006-09-26 · TA获得超过550个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:0
展开全部
“printf("%c"a[i]);(如果把他换成printf("%s",a[i]);为什么不能编译?)”
是你自己编译错误!你少输入个“,”
“printf("%c",a[i]);”
或者其他地方错了,s和c 是一样的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
该用户已被禁言8X
2006-09-26 · TA获得超过272个赞
知道小有建树答主
回答量:422
采纳率:0%
帮助的人:309万
展开全部
a[i]的意思是数组a的第i个元素
printf("%s",);是输出数组形变量,所以出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2006-09-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
C语言里字符串和char *类型可以看作等价。
%c对应char型,%s对应char *型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式