关于结构体间的赋值问题。
typedef struct {
char name[20];
int num;
}student;
student *stu_;
student stu[10];
stu_=stu;
我知道stu[2].name 是lina;如何赋值给stu[5].name?
[解决办法]
看来name成员是个字符数组,用for循环,一个一个赋值过去!
for(i=0;i<20;i++)
stu[5].name[i] = stu[2].name[i];
[解决办法]
strcpy,strncpy
[解决办法]
1、%s是printf的输出规范,就是说要输出一个字符串,并要求参数是一个字符串地址(也就是stu[2].name),所以printf输出没有问题!
2、stu[2].name=stu[3].name,用这个语句来进行字符数组的赋值是错误的;
3、关于2的理由,你可以这样想!首先,成员name是一个长度是20的数组;其次,他在内存中的位置依然固定,stu[2].name是其首地址,是个常量,常量是不可改变的,所以也就不存在上一条的赋值语句了。stu[5].name同理。(关于数组名的问题参见C Primer)
[解决办法]
stu[5] = stu[2];即可完成结构体整个赋值,如果只想对name赋值:memcpy(stu[5].name, stu[2].name, 20);或者strncpy(stu[5].name, stu[2].name, 20);又或者strcpy(stu[5].name, stu[2].name);