2024年5月9日发(作者:)

c语言字符数组与字符串的使用详解

c语言字符数组与字符串的使用详解

引导语:字符串主要用于编程,概念说明、函数解释、以下是店铺整理的c语言字符

数组与字符串的使用详解,欢迎参考阅读!

1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋

给数组中各元素。

char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};

即把10个字符分别赋给str[0]到str[9]10个元素

如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,

则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '' )。

2、字符数组与字符串在c语言中,将字符串作为字符数组来处理。

(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,

例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实

际长度,C语言规定了一个“字符串结束标志”,以字符''代表。如果有一个字符串,其

中第10个字符为'',则此字符串的有效字符为9个。也就是说,在遇到第一个字符''时,

表示字符串结束,由它前面的字符组成字符串。系统对字符串常量也自动加一个''作为结

束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节''是系

统自动加上的。(通过sizeof()函数可验证)有了结束标志''后,字符数组的长度就显得不

那么重要了,在程序中往往依靠检测''的位置来判定字符串是否结束,而不是根据数组的

长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度

始终大于字符串实际长度。(在实际字符串定义中,常常并不指定数组长度,如char

str[ ])说明:' '代表ASCII码为0的字符,从ASCII码表中可以查到ASCII码为0的字符

不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串

结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。对C语言处理字

符串的方法由以上的了解后,再对字符数组初始化的方法补充一种方法——即可以用字符

串常量来初始化字符数组:char str[ ]={"I am happy"}; 可以省略花括号,如下所示char

str[ ]="I am happy";注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,

不能用于字符数组的.赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是

错误的char str[ ]; str="I am happy";不是用单个字符作为初值,而是用一个字符串(注

意:字符串的两端是用双引号“”而不是单引号‘'括起来的)作为初值。显然,这种方

法更直观方便。(注意:数组str的长度不是10,而是11,这点请务必记住,因为字符

串常量"I am happy"的最后由系统自动加上一个'')

因此,上面的初始化与下面的初始化等价char str[ ]={'I',' ','a','m','

','h','a','p','p','y',''};而不与下面的等价char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};前者的长

度是11,后者的长度是10.说明:字符数组并不要求它的最后一个字符为'',甚至可以不

包含'',向下面这样写是完全合法的。char str[5]={'C','h','i','n','a'};++++++++可见,用

两种不同方法初始化字符数组后得到的数组长度是不同的。

#includevoid main(void)

{