我有这行代码,
newCust.idNumber == ID;
ID 的值是字符串类型并且已经分配,newCust 是我的结构的名称,idNumber 是我的结构中的一个字符串,我想将 ID 的值分配给结构的 ID 号,知道为什么这行代码是“无效的声明”请。我正在使用 eclipse,我是 C 编程的初学者
这是因为==
比较两个值,并丢弃该比较的结果。尽管像这样的表达式语句在 C 中是完全合法的,但它们非常不寻常,并且经常作为您输入错误的指标。这就是编译器警告您的原因。
编辑:
我也尝试了=,然后我得到了这个错误,从类型分配给类型时不兼容
char[60]
的类型char *
你不能像这样分配字符串:你需要使用strcpy
,像这样:
strcpy(newCust.idNumber, ID);
确保它newCust.idNumber
足够长,可以将ID
其与其空终止符放在一起,即假设newCust.idNumber
,char[60]
的值ID
必须为 59 个字符或更少。
因为您正在进行比较并丢弃结果。你可能想要
newCust.idNumber = ID;
注意单个等号。
==
检查是否相等,它不是赋值运算符。
而且由于您不检查支票的返回码,Eclipse(正确地)对您大喊大叫。