提示不能将char*类型的值分配到char类型的实体,如何修改?

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;

没测试过,如果有问题欢迎继续追问