C语言错误:expression must be a modifiable lvalue

typedef struct train
{
char num[20];
省略,其他也是char 变量名称[20]
}p[20], c;

void create(struct train newtrain[])
{
前省略
printf("输入车次号\n");
scanf("%s", newtrain[i].num);
if (newtrain[i].train_num = 'T123') /*这里的newtrain[i].train_num出现错误*/
newtrain[i].total_seat = 60;
如果想保持struct train里面的char都是[20]不变,应该怎么改newtrain[i].num

这边有两个错误,首先,if括号里是赋值语句,不是判断语句,只有一个=,那么报错就是这边导致的,第二个,c里面两个char字符串不能直接用=比较是否相等,应该用strcmp

扩展资料

基本特性

1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。

2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。

4、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持

但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果

但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。

参考资料来源:百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-26

该程序有以下两个错误:

1、if (newtrain[i].train_num = 'T123')这个语句应该改成if (newtrain[i].train_num =='T123'),因为if括号里面必须是判断语句,而这个是赋值语句,所以报错expression must be a modifiable lvalue。

2、newtrain[i].total_seat = 60这个语句不能直接赋值,这样的话“T123”被认为是常量字符串,是不可以进行修改的。因为这是if前提下的赋值语句,正确用法是strcpy(newtrain[i].total_seat ,60)。

扩展资料:

c语言提供了三种形式的if语句:

1、if(表达式)语句。

例如:if(x>y)printf("%d",x);

此时,如果表达式为真,则执行printf语句。

2、if(表达式)语句1 else 语句2。

例如:if(x>y)printf("%d",x);

else printf("%d",y)。

此时,如果x>y成立为真,则执行语句printf("%d",x),然后直接跳过else,同时也跳过语句printf("%d",y),去执行之后的语句。

如果x>y不成立为假,则不执行语句printf("%d",x),执行语句printf("%d",x)。

3、if(表达式1)语句1

else if(表达式2)语句2。

else if(表达式3)语句3。

此时,哪个表达式为真,则运行哪个if后面的语句。如表达式3成立为真,执行语句3。

if语句使用的注意事项:

1、if(条件表达式)其后没有分号,一般来说,有"{}"有没有";",有";"就没有"{}"。

2、if语句所控制的语句如果是一条语句,可以不写大括号,如果控制的是两条以上的语句,必须加大括号。if语句的控制体没有加大括号是其后跟的一条语句。

本回答被网友采纳
第2个回答  2020-04-29

C语言错误:expression must be a modifiable lvalue是设置错误造成的,解决方法为:

1、点击“编译运行”,在下方会出现错误的行数。

2、到出错的17行附近查错。

3、16行的;忘加了,添加上去即可。程序的运行结果。

4、点击编译,可以查看代码有没有错。

本回答被网友采纳
第3个回答  2016-12-26
你这边有两个错误,首先,你的if括号里是赋值语句,不是判断语句,你发现没,只有一个=,那么你的报错就是这边导致的,第二个,c里面两个char字符串不能直接用=比较是否相等,你应该用strcmp本回答被提问者采纳
第4个回答  2016-12-26
这样定义的话“T123”被认为是常量字符串,是不可以进行修改的。。。。
所以不要用newtrain[i].train_num = 'T123'
而用strcpy来,就不会有问题了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网