1

我有这行代码,

newCust.idNumber == ID;

ID 的值是字符串类型并且已经分配,​​newCust 是我的结构的名称,idNumber 是我的结构中的一个字符串,我想将 ID 的值分配给结构的 ID 号,知道为什么这行代码是“无效的声明”请。我正在使用 eclipse,我是 C 编程的初学者

4

3 回答 3

3

这是因为==比较两个值,并丢弃该比较的结果。尽管像这样的表达式语句在 C 中是完全合法的,但它们非常不寻常,并且经常作为您输入错误的指标。这就是编译器警告您的原因。

编辑:

我也尝试了=,然后我得到了这个错误,从类型分配给类型时不兼容char[60]的类型char *

你不能像这样分配字符串:你需要使用strcpy,像这样:

strcpy(newCust.idNumber, ID);

确保它newCust.idNumber足够长,可以将ID其与其空终止符放在一起,即假设newCust.idNumberchar[60]的值ID必须为 59 个字符或更少。

于 2013-01-08T15:43:06.963 回答
1

因为您正在进行比较并丢弃结果。你可能想要

newCust.idNumber = ID;

注意单个等号。

于 2013-01-08T15:42:53.070 回答
1

==检查是否相等,它不是赋值运算符。

而且由于您不检查支票的返回码,Eclipse(正确地)对您大喊大叫。

于 2013-01-08T15:43:03.607 回答