c语言中字符数组最后一个字符一定要是'\0'吗?

作者&投稿:褒良 (若有异议请与网页底部的电邮联系)
~

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'。上面的初始化与下面的初始化等价。

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




c语言如果用字符串类型输出字符数组,字符数组最后一个是0,那么为什么...
因为你的字符串数组错误的引用了存在脏数据的内存 要避免,就要初始化数组 memset(str,0,n)将str字符串中前n个字节替换为0并返回str;str为你定义的字符串,n为字符串容量,并非长度,即char a[20],不管你有几个字符,n为20为佳 加上头文件string.h 消息来源华夏联盟,亲 ...

C语言的字符串为什么以0作为它的结尾?
在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\\0'存入数组,并以此作为该字符串是否结束的标志。有了'\\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

C语言中: char a[5]就是一个长度为5的字符数组,最多存储4个字符,最后...
\\0是字符串的结束标记 没规定说 char数组最后一个字符必须是\\0 只不过你的最后一个字符不是\\0的话 你用s%这类的输出控制的时候会越界出乱码就是了

C语言 如何判断到达字符数组中字符串的尾部?如果用while(c[i]!='\\...
while(c[i]!='\\0') \/\/你这句话意思,如果c[i]的值不为0,进循环。{ i++;} 那么,数组里有字符'0'的话,显然不会停止。因为0不等于'0', 翻下书看看'0'的ascii码值是多少。如果c是一个字符串,如果c[5]的值为0,那必然已经到了字符串的最后一个。

C语言 为什么字符数组倒置输出,输入的最后一个字符没有输出 样例输入 7...
有两个解决方案:一是在最后的字母前也加一个空格后再按回车。二是请你把输入语句中%c后面的一个空格去掉,然后输入时也是输入连续的n个字母。

c中string是什么意思
什么是字符串(string)C 语言中的字符串(string)实际上是字符数组(characters array)的一种表现形式。我们可以用 char 类型的数组来存储字符串,每个数组元素代表字符串中的一个字符,最后一个元素必须为 '\\0',即 NULL 字符,用来表示字符串的结束。字符串中可以包含字母、数字、特殊字符等。在 C...

c语言,不定长的字符数组在输入字符后是用什么表示结束的
cin>>str_input;cin 函数应该是碰到空格就返回了,可以用cin.getline()等其他函数读入。计算长度写法没有问题。

C语言用字符串给字符数组赋初值时要不要计算末尾的结束标志‘\\...
正常情况下应该会报错的error C2117: 'ok' : array bounds overflow(数组上溢)如果没有报错,那朋友,这样很危险的,以后别这样。你只定义字符数组长度为2,但是实际字符为"ok\\0",也就是3个字符,最后的字符'\\0'仍然存在系统中,只不过不在数组c中。这样以后系统再为别的数组分配空间的时候,...

字符数组只能存放字符串吗
C语言中字符数组既可以保存字符,又可以保存字符串。C语言中字符数组的一般形式为:char数组名[数据长度]。例如:chara[10];a[0]='0';a[1]='1';a[2]='2';a[3]='3';a[4]='4';a[5]='5';a[6]='6';a[7]='7';a[8]='8';a[9]='9';就定义了a为字符数组,包含10个"0...

c语言输入字符串结束的标志?
C语言中字符串的结束标志是【''】。C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串,字符串总是以【''】作为结束符。''就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。''就是字符串结束标志。''是转译字符,意思是告诉编译器,这不是字符0,而是空字符...

桥东区15938554559: C语言中,“存储字符数组中的最后一个字符必须是'\0' ”,这句话为什么是错的? -
勇秒灵津: 字符数组最后一个字符未必要是'\0' 字符串才是

桥东区15938554559: c语言,字符数组中最后一个字必须为'\0',为什么错?
勇秒灵津: 不是字符数组中最后一个字符必须为'\0',如果字符数组中存放的是一个字符串,则最后一个字符应当'\0','\0'是结束符号,这样当输出这个字符串时,只须输入数组名就可以,输出函数会自动输出数组中的字符,直到遇到'\0'为止,否则你就要利用循环自己将字符一个一个的输出,而且还要判断该字符是不是所需要的字符,明白了么?

桥东区15938554559: 存储字符数组中的最后一个字符必须是'\0'? -
勇秒灵津: 这个不一定,不同的编程工具对字串的定义是不同的在早期的DOS功能调用中,汇编调用的输出字串是以$结尾的而PASCAL语言是没有结束符而在字串头上放一个长度在C语言中,字串是以'\0'结尾的,但不是必须的(除非你要调用字串处理函数)

桥东区15938554559: C语言中语句的最后一定要有的一个字符是什么? -
勇秒灵津: 简单c语言语句以分号,最后必须要有一个分号,如: int i; i=1;但复合语句不需要分号,如: int i,s=0; for(i=1;i<11;i++) { s+=i; printf("%d\n",s); //}后面没有分号 }

桥东区15938554559: C语言中: char a[5]就是一个长度为5的字符数组,最多存储4个字符,最后一个字符必须是 '\0'. -
勇秒灵津: \0是字符串的结束标记 没规定说 char数组最后一个字符必须是\0 只不过你的最后一个字符不是\0的话 你用s%这类的输出控制的时候会越界出乱码就是了

桥东区15938554559: c语言中字符串,为什么最后要加个'\0' ? -
勇秒灵津: '\0'一般放在字符串的结束处,表示字符串的结束,其是ascii值为0的字符的转义. 在头文件#include <string.h>中包含的一些字符串处理函数等中,一般处理字符串时,都是一'\0'作为字符串的结束,如果一个字符串中没有'\0'这个结束字符,那么这些函数将不能确定字符串的结束位置在哪儿,从而引起一些不必要的错误.

桥东区15938554559: 在内存中字符串结尾都有0吗 -
勇秒灵津: 没法说这个事情 ,有2种情况. 例如 在C语言中 根本没有字符串 对象 所以 字符串 实际是个 字符数组 char c[]=“'a','b','c','\0'”; 在末尾加个 \0 如果你 没有 加上...

桥东区15938554559: C语言中当字符数组的长与所赋初值的长相等时,当而字符中没有加'\0'时,系统是怎么判断,这个字符串结束. -
勇秒灵津: 系统是这样做的,从a的首地址开始输出,直到出现\0结束符(这个结束符可能出现在另一个变量所在的空间内或其他空间)为止.因此会出现乱码.因为这个结束符不一定在什么地方出现.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网