解决该问题的方法:使用strcpy函数进行字符串拷贝
原型声明:char *strcpy(char* dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
1 // testArray.cpp : 定义控制台应用程序的入口点。 2 3 #include "stdafx.h" 4 #include "string.h" 5 6 #define MAX_AGE_SIZE 120 7 #define MAX_NAME_SIZE 100 8 9 typedef enum{//枚举值定义 10 walking = 1, 11 running = 2, 12 swimming = 3, 13 jumpping = 4, 14 sleeping = 5 15 }Hobby; 16 17 typedef enum{ 18 Chinese = 1, 19 English = 2, 20 Japanese = 3 21 }Language; 22 23 typedef struct People{//结构体定义 24 union{//联合体定义,使用方法和struct类似 25 struct{ 26 char age[MAX_AGE_SIZE]; 27 char name[MAX_NAME_SIZE]; 28 }Child; 29 Hobby hobby; 30 Language language; 31 }Student; 32 }People; 33 34 35 int _tmain(int argc, _TCHAR* argv[]) 36 { 37 char name1[MAX_NAME_SIZE] = {"test1"}; 38 char name2[MAX_NAME_SIZE] = {"test2"}; 39 40 People p[2]; 41 //p[0].Student.Child.age = "10";//报错:表达式必须是可修改的左值(原因:字符串不能直接赋值 ) 42 strcpy(p[0].Student.Child.age,"10");//使用strcpy函数实现字符串拷贝 43 strcpy(p[0].Student.Child.name,name1); 44 p[0].Student.hobby = walking; 45 p[0].Student.language = Chinese; 46 47 strcpy(p[1].Student.Child.age,"12"); 48 strcpy(p[1].Student.Child.name,name2); 49 p[1].Student.hobby = running; 50 p[1].Student.language = English; 51 52 printf("Student1's name:%s ",p[0].Student.Child.name); 53 return 0; 54 }