struct GOODS {
char strNo[11];
char strName[21];
float fPrice;
char statusOK;};
void query_by_no(struct GOODS goods[], int nUsedNum) {
printf("输入要查询的商品编号\n");
char m=0;
scanf("%s", m);
for (int i = 0; i < nUsedNum; i++){
int total;
if (m = goods[i].strNo)
{
printf("商品编号 商品名 价格 库存数 商品总价");
}
else
printf("商品不存在");
}
return;
}
在if (m = goods[i].strNo)这个语句上出现了上述问题,有什么比较好的修改方法吗?
if (m == goods[i].strNo) 两个==是判断 ,一个=是赋值
这不是肯定的吗,你好好看看strNo,这是一个字符数组,你想用一个字符数组给一个字符赋值嘛,先不说赋值,你if里面是不是写错了,判断是否有商品编号的话,应该用==,而不是赋值哦
而且scanf的用法也错了,你只是要一个字符,那为什么要用"%s",用"%c"就够了,而且后面的赋值对象还不取地址..
应该写成这样
scanf("%c", &m);
最后说一下问题,既然编号是一个数组,那么你就再用一个for循环去遍历编号数组不就行了,strNo的长度也是固定的,直接for
for (int i = 0; i < nUsedNum; i++) {
int total;
for (int j = 0; j < 11; ++j) {
if (m == goods[i].strNo[j]) {
printf("商品编号 商品名 价格 库存数 商品总价");
return;
}
}
}
printf("商品不存在");
return;
没测试过,如果有问题欢迎继续追问