首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于结构体间的赋值有关问题

2012-09-17 
关于结构体间的赋值问题。typedef struct {char name[20]int num}studentstudent *stu_student stu[10]

关于结构体间的赋值问题。
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)
[解决办法]

C/C++ code
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); 

热点排行