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 }
时间: 2024-08-06 17:22:38

C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值的相关文章

C++中出现“IntelliSense: 表达式必须是可修改的左值”的Bug解决

说明:在学习算法导论,需要写一嵌套的小程序,题目是: Consider a three-parameter recursive function w(a, b, c): if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1 if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c

问题:程序编译通过,但是执行时报错:coredump

问题描述: 在一个客户现场搭建环境时,遇到了一个棘手的问题,C代码编译通过后,无法正常运行,启动会出现“coredump”错误. 运行环境为新搭建的AIX6.1,数据库为Oracle11.2.0.2.0. 将平台的C代码部署到用户下之后,makefile编译成功,之后启动程序,发现无法正常运行,启动会出现“coredump”错误. 问题排查: 根据dbx工具定位的代码位置,检查代码并未发现内存泄漏.越界等bug:到这就卡住了. 为了确定是否为代码的问题,新创建test.ec程序如下: 1 #in

pyinstaller打出的EXE包执行时报错“failed to excute ”信息

我的程序是selenium自动化脚本,打包时执行的是 Python pyinstaller -F --onefile -w  XXX.py 这样打出的包执行后提示“failed to excute script  xxx” 一直没想到是哪里出了问题,后来又仔细看了下打包参数 -F, –onefile 打包成一个exe文件.-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项).-c, –console, –nowindowed 使用控制台,无界面(默认)-w, –wi

sql server 作业导出放到另外一台机器执行时报错的解决方法

SQL Server2008脚本创建作业失败,提示: 引用内容消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs':列不允许有 Null 值.Insert 失败.语句已终止. 解决方法 在创建作业的脚本中查找@owner_login_name,会找到类似语句: 复制内容到剪贴板 程序代码@owner_login_name=N'WIN-V8UR550191J\Administrat

初始化mysql数据库 /usr/bin/mysql_install_db执行时报错

错误描述: FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:Data::Dumper 解决办法: 安装autoconf库 yum -y install autoconf 再次运行 /usr/bin/mysql_install_db,错误解决. 原文地址:https://www.cnblogs.com/syq816/p/8582628.html

python执行报错 configparser.NoSectionError: No section: &#39;section_1&#39;

场景:请求获取验证码模块regVC.py读取配置文件config.ini时,regVC.py模块单独执行正常,但通过run_all.py模块批量执行时报错,找不到section 解决办法:配置文件路径需写绝对路径 config.ini文件如下: regVC.py模块代码如下: 1 import requests 2 import configparser 3 import unittest 4 from Case.readexcel import ExcelData 5 import json

mybatis-generator插件执行报错:Cannot resolve classpath entry

记录一个小问题 使用了mybatis-generator插件自动生成实体类,DAO,Mapper,在执行时报错.报错信息如下 Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project onlineStudyManager: Execution default-cli of goal org.mybatis.generator

python代码在linux终端中执行报错:Unable to init server: Could not connect: Connection refused

python代码在linux终端中执行时报错: Unable to init server: Could not connect: Connection refused Unable to init server: 无法连接: Connection refused 解决办法: 在要执行的python文件里加入以下两句代码: 切记:在最开头添加. import matplotlib matplotlib.use('Agg') 原文地址:https://www.cnblogs.com/ming-4/

scala的trait执行报错: 错误: 找不到或无法加载主类 cn.itcast.scala.`trait`

scala的trait执行报错: 错误: 找不到或无法加载主类 cn.itcast.scala.`trait`.Children 原因:包名写成了trait,与trait关键字重名了: package cn.itcast.scala.`trait` 解决方法:将包名trait修改为其他名字,比如traits 原文地址:https://www.cnblogs.com/mediocreWorld/p/11368233.html