关于结构体赋值问题

来源:百度知道 编辑: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 就没有问题了,不知道为什么

数组名是不可作左值的
用没有缺陷的语句:
strncpy(boy.name, "TOM", sizeof(boy.name));
顺便提一下,楼上是错的sizeof("TOM")是什么??永远为4

别愤怒了,字符串拷贝不是你这么做的。

boy.name="TOM";
改为:
memcpy(boy.name,"TOM",sizeof("TOM"));

boy.name是字符数组首地址,不能那么赋值的

真专业