关于结构体赋值问题
来源:百度知道 编辑:UC知道 时间:2024/07/02 13:27:27
我已经离奇的愤怒了,很简单一个结构体赋值,竟然报错...恳请指点:
#include <stdio.h>
#include <string.h>
struct node{
char name[4];
int age;
};
void main()
{
struct node boy;
boy.name="TOM";
boy.age=20;
printf("boy.name=%s boy.age=%d\n",boy.name,boy.age);
}
报错行是boy.name="TOM"; boy.age=20; 这2行报:
error C2106: '=' : left operand must be l-value 实在不知道什么原因!
可是将name[4]换成 *name 就没有问题了,不知道为什么
#include <stdio.h>
#include <string.h>
struct node{
char name[4];
int age;
};
void main()
{
struct node boy;
boy.name="TOM";
boy.age=20;
printf("boy.name=%s boy.age=%d\n",boy.name,boy.age);
}
报错行是boy.name="TOM"; boy.age=20; 这2行报:
error C2106: '=' : left operand must be l-value 实在不知道什么原因!
可是将name[4]换成 *name 就没有问题了,不知道为什么
数组名是不可作左值的
用没有缺陷的语句:
strncpy(boy.name, "TOM", sizeof(boy.name));
顺便提一下,楼上是错的sizeof("TOM")是什么??永远为4
别愤怒了,字符串拷贝不是你这么做的。
boy.name="TOM";
改为:
memcpy(boy.name,"TOM",sizeof("TOM"));
boy.name是字符数组首地址,不能那么赋值的
真专业