首先,'pcs'
是一个字符常量,而你想要一个字符串。语法是"pcs"
.
此外,type
是一个数组,所以当它不与sizeof
,_Alignof
或一元运算符一起使用时&
,它会衰减为指针,并且它不是左值。因此,您不能重新分配type
.
strcpy
可能是一个解决方案。
#include <string.h>
char type[5];
switch (rec[n-1].recptr->qtype)
{
case 'p':
strcpy(type,"pcs");
break;
case 'm':
strcpy(type,"kgs");
break;
default:
printf("incorrect code");
break;
}
或者,使用字符串文字(如果您不修改type
):
const char *type;
switch (rec[n-1].recptr->qtype)
{
case 'p':
type="pcs";
break;
case 'm':
type="kgs";
break;
default:
printf("incorrect code");
break;
}
参考
C11 (n1570),第 6.3.2.1 节左值、数组和函数指示符
除非它是运算sizeof
符、运算符_Alignof
或一元&
运算符的操作数,或者是用于初始化数组的字符串文字,否则类型为 ''array of type'' 的表达式将转换为类型为 '' 的表达式指向类型''的指针,它指向数组对象的初始元素,不是左值。