c语言,字符数组中最后一个字必须为‘\0’,为什么错?

 我来答
八哥说科技
高粉答主

2019-09-17 · 分享科技资讯,共享科技生活
八哥说科技
采纳数:111 获赞数:78595

向TA提问 私信TA
展开全部

c语言中字符数组并没有规定最后一个字符为'\0',甚至可以不包含'\0',添加'\0'作为结束标志是针对于c语言对字符串的处理而言的,因此,字符数组中最后一个字必须为‘\0’是错误的。

C语言中没有字符串类型,字符串是存放在字符型数组中的。在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\0'作为结束标志 。

例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素。这样的字符数组长度为8,并没有在最后添加'\0'符号,但其初始化是完全正确的。

扩展资料:

C语言对'\0'结束的相关处理:

1、字符数组的初始化,如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。例如:char a[9]={'1','2','3','4','5','6','7','8'};中,初始化数值只提供了8个,但字符长度为9,因此,会自动在补充空字符(即'\0')。

2、字符串常量初始化数组。

例如:char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};可写为:char c[ ]={"C program"} 或去掉{}写为:char c[ ]="C program";注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

参考资料来源:百度百科-字符数组

英雄NO无敌
推荐于2017-12-16 · TA获得超过125个赞
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
不是字符数组中最后一个字符必须为'\0',如果字符数组中存放的是一个字符串,则最后一个字符应当'\0','\0'是结束符号,这样当输出这个字符串时,只须输入数组名就可以,输出函数会自动输出数组中的字符,直到遇到'\0'为止,否则你就要利用循环自己将字符一个一个的输出,而且还要判断该字符是不是所需要的字符,明白了么?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b9d2a2b3d
2009-01-05 · TA获得超过506个赞
知道答主
回答量:71
采纳率:0%
帮助的人:0
展开全部
'\0'是为了关闭字符串,如果不关闭,那么就要爆掉!
所以开数组时要开大!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式