读书人

很基础的结构体里的字符数组赋值有关问

发布时间: 2012-05-15 14:35:29 作者: rapoo

很基础的结构体里的字符数组赋值问题
一般的字符数组可以这么赋值char a[20]="abc\rdefghiaaaaaaaa";
但是如果定义在结构体里struct stra{
char a[20];
int length
};
就不能stra r;r.a[20]="abc\rdefghiaaaaaaaa"这样赋值,如果字符串小于19,会提示cannot convert from 'char [19]' to 'char [20],如果等于19,提示left operand must be l-value,这个是为什么,如果以后要动态给结构体的字符数组赋值该怎么搞

[解决办法]
strcpy(r.a, "abcdefg");
[解决办法]
strcpy
[解决办法]
除了巴乔提供的方法,还可以:

C/C++ code
// 1. 初始化赋值struct stra r = {"abc\rdefghiaaaaaaaa", 19};// 2.内存拷贝struct stra r;char *s = "abc\rdefghiaaaaaaaa";memcpy(r.a, s, strlen(s) + 1);
[解决办法]
r.a[20]="abc\rdefghiaaaaaaaa"
这样相当于是给a的第20号元素赋值,况且也只有初始化的时候可以用字符串来赋值,其他时候都只能用字符,或者用strcpy
[解决办法]
r.a[20]="abc\rdefghiaaaaaaaa";这句话的意义是想a的第21个元素赋值,当然不行了。

读书人网 >C语言

热点推荐