C语言字符数组,输入输出字符串格式。(请各位大神指教)

具体问题如下:main(){charstr[5];scanf(“%s”,str);printf(“%s”,str);}str表示的不是数组的首地址吗?为何输出是print... 具体问题如下:
main()
{ char str[5];
scanf(“%s”, str);
printf(“%s”, str);
}
str表示的不是数组的首地址吗?为何输出是printf("%s",str);这样?
展开
 我来答
百度网友bfbd1d2
2012-12-08 · TA获得超过846个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:167万
展开全部
%s表示输出一个字符串,给出的字符指针变量名是str,那么系统先输出它所指向的第一个字符数据,然后自动使str加1,使之指向下一个字符,然后再输出一个字符。。。。如此直到遇到结束标志‘\0’为止(\0是最后被自动加上的,因此能够在输出时确定字符串的终止位置)~
追问
嗯,你说的这个我知道。我想问的是:在输出语句printf(“ ”,   );中,引号右边的代表的是输出列表。按理说,上面对应的就该是输出的元素名,可为什么输出列表用的是数组的地址呢(也就是指针变量)?
追答
只能说是c语言规定的两种输出字符串的方法
chun280444332
2012-12-08 · TA获得超过123个赞
知道答主
回答量:257
采纳率:0%
帮助的人:114万
展开全部
注意哦,你最好是输四个字符进去,会补‘\0’,如果输入五个会越界哦,不同编译器会有不同的处理方式,最好不要用SCANF,这个函数功能不全,不能控制输入的字符个数。
fgets(str,4,stdin);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26ad406
2012-12-08 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1062万
展开全部

printf("%s",str);表示从这个地址开始输出直到遇到字符串结束符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
元素cycle
2012-12-08 · TA获得超过282个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:99.3万
展开全部
main()
{ char str[5];
scanf(“%s”, str);
printf(“%s”, str);
}
str表示的是数组的首地址
但输出printf("%s",str)错了
应该是printf("%s",*str)
追问
大神,实际上我发的是可行的,请自行验证。
追答
不好意思啊
 printf(格式控制,输出表列),格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号意外,还可以使用一些转义字符表示特殊的含义。
常用printf(“%d”, &a); 表示后面的必为一个指向地址的
所以printf("%s",str)中str是指向字符串首地址的所以是没问题的
实在不好意思
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qbz721
2012-12-08 · TA获得超过396个赞
知道小有建树答主
回答量:943
采纳率:0%
帮助的人:349万
展开全部
%s是要求输出一个字符串,而不是一个数据,这么用没有问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式