首页 > 编程知识 正文

c语言字符串赋值语句,c语言如何赋值

时间:2023-05-05 00:18:56 阅读:21204 作者:146

char a[10];

怎么给这个数组赋值?

1、定义时直接用字符串赋值

char a[10]='hello ';

注:不能在分配值之前进行定义,例如char a[10]。 a[10]='hello '; 这是错误的!

2、给数组中的字符一个个赋值

char a[10]={'h '、' e '、' l '、' l '、' o'};

3、使用strcpy

char a[10]; srcpy(a,' hello );

容易出错的情况:

1、char a[10]; a[10]='hello '; //1个字符能容纳字符串吗? 而且a[10]也不存在!

2、char a[10]; a='hello '; //这很容易发生。 a是指针,但指向分配给堆栈的10个字符区域。 现在,这个情况a指的是数据区域中的晕圈常数。 这里的指针a很混乱。 不允许!

然后,不能使用关系运算符“==”比较两个字符串。 只能用strcmp ()函数处理。

c语言运算符无法操作字符串。 因为在c语言中将字符串作为数组来处理,所以字符串的限制方法和数组相同,特别是不能用c语言的运算符进行复制和比较操作。

尝试直接复制或比较字符串将失败。 例如,假设str1和str2有以下声明:

char str1[10],str2[10];

=不能使用运算符将字符串复制到字符数组中:

str1='abc '; /*** WRONG ***/

str2=str1; /*** WRONG ***/

c语言将这些语句解释为一个指针和另一个指针之间的(非法的)赋值运算。 但是,使用=初始化字符数组是合法的。

char str1[10]='abc ';

这是因为在声明中,=不是赋值运算符。

尝试使用关系运算符、判定运算符等比较字符串是合法的,但无法获得预期的结果。

if(str1==str2) ./*** WRONG ***/语句将str1和str2作为指针进行比较,而不是比较两个数组的内容。 因为str1和str2有不同的地址,所以表达式str1==str2的值必须为0。

3358 www.Sina.com/: http://blog.csdn.net/cherish _ xmm/article/details/43267603

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