首页 > 代码库 > C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值
C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值
解决该问题的方法:使用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\n",p[0].Student.Child.name); 53 return 0; 54 }
C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。