首页 > 编程知识 正文

c++怎么给字符数组赋值,c语言字符串数组赋值

时间:2023-05-03 22:04:00 阅读:12443 作者:2730

1 .初始化字符数组

在c语言中,字符串被视为字符数组。 因此,字符串有两种声明方式:字符数组和字符指针。

)1)初始化字符数组(直接逐个初始化字符数组)是为数组中的每个元素指定字符的最简单方法。

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

注:如果在大括号中指定的字符数大于数组的长度,则将其视为语法错误。 如果小于数组的长度,则只针对这些字符数组中的上一个元素,其馀元素自动为空字符“”。

)用字符串常量初始化字符数组:在c语言中,将字符串作为字符数组处理。 因此,可以使用字符串初始化字符数组。

char str[]={'I am happy'};

也可以省略大括号:

char str[]='I am happy ';

但是,上述字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值。 只能将一个字符数组赋值给该元素。 下面的赋值方法是错误的。

char str[];

str='I am happy '; //错误,字符数组赋值只能为每个元素赋值()错误原因: c语言没有提供可以直接操作字符串的运算符“=”可以用于其他数据类型的赋值,但不能直接为字符串赋值。

这是字符数组初始化的两种方式,但这两种方式其实并不等效; 他们排列的长度不同。

#包含

int main () )

{

char parr[]='zifuchuanshuzu ';

不等于charr[]

char charr[]={ 'z '、' I '、' f '、' u '、' c '、' h '、' a '、' n '、' s '、' h '、' z '、u

等效于charr[]

char charr_test[]={ 'z '、' I '、' f '、' u '、' c '、' u '、' a '、' n '、' h '、' u '和' z}

intnum_Parr=sizeof(Parr );

intnum_charr=sizeof(charr );

intnum _ charr _ test=sizeof (charr _ test );

printf(theparr[]is:%s(n ),parr );

printf (thesizeofparr [ ] is : % dnn ',num_parr );

不等于charr[]

printf(thecharr[]is:%s(n ),charr );

printf (thesizeofcharr [ ] is : % dnn ',num_charr );

等效于charr[]

printf (thecharr_test [ ] is : % sn ',charr _ test );

printf (thesizeofcharr _ test [ ] is : % dn ',num_charr_test );

返回0;

}

执行结果:

从结果可知,第二种初始化方式的打印结果有问题,但字符数没有问题。 这发生错误,因为字符串缺省以“ 0”结尾,第二种初始化方法没有“ 0”,而是将其打印为字符串。

第一,系统自动添加了’ 0’; 可见其字符数为15 (与第3个相同)。

)3)字符指针:在c语言中也可以使用字符指针存储字符串。

初始化字符指针:

char* str='zifuchuanshuzu ';

c语言用字符数组处理字符串常数,打开了在存储器中存储字符串常数的字符数组。 程序在定义字符串指针变量str时,只需将字符串的起始地址分配给str。

输出:

printf(%s(n )、str );

系统首先输出str指向的字符,然后递增1,直到遇到’ 0’; 与数组的输出方法相同。

字符指针分配:

char *str;

str='zifuzhizhen ';

字符指针的分配是正确的。 与字符数组不同。

2 .字符串处理函数: strcpy函数和strcat函数

)1) char*strcpy(char*dest,const char*src );

头文件: string.h和stdio.h

功能:将以src地址开头并包含“ 0”结束符的字符串复制到以dest开头的空间中。

注意:字符数组dest必须是数组名称的格式。 src可以是数组名称或字符串常量,可以使用strcpy将src的前几个字符复制到字符数组中。

)2) char*Strcat(char*dest,const char *src );

头文件: string.h

功能:将src内容复制到dest末尾(封面(0) )。

注: src和dest内存空间不能重叠。 dest需要足够的空间来容纳src。 字符数组dest必须是数组名称的形式,src可以是数组名称,也可以是字符串常数; 返回指向dest的指针;

#包含

#包含

int main () )

{

使用strcpy为字符数组赋值

char parr[40];

srcpy(Parr,' zifuchuanshuzu ';

printf(theParr ) ) is:%snn ),parr );

//赋值字符串的一部分

char charr [ ]=' _ test _ strcat _ redundance ';

char tarr[13];

charr[12]=' ';

复制charr的前12个字符

srcpy(tarr、charr );

printf(thetarr[]is:%snn ),tarr );

//字符串链接

strcat(parr、charr );

printf (theparrandtarr [ ] is : % sn ',parr );

返回0;

}

结果:

3 .总结

) c语言不直接提供字符串操作,其字符串操作通过转换为字符串(如字符数组、字符指针等)进行,其本质是对字符的操作。

)2)作为字符数组,与普通数组相同。 区别在于,每个元素都是字符,因此不能直接用“=”为字符数组赋值。 (parr )="zhifushuzu "是错误的分配方法。 )但是,可以为每个元素赋值。 ) charr ) ) ) ) ) )

)3)字符串必须以’ 0’结尾; 字符数组和字符指针初始化为整个字符串,并自动添加’ 0’。 对于字符数组,在用单个字符初始化或赋值时,请务必考虑终止符’ 0’。

(4) strcpy和strcat内部也是对字符的操作,是用“ 0”结束字符串的标志。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。