首先,'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;
}
或者,使用字符串litterals(如果你不修改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
運算符,或者是一元運算符&
,或者是用於初始化數組的字符串文字,具有類型爲'''的數組的類型爲 的表達式轉換爲類型爲''的表達式,指向類型爲''的表達式將 指向數組對象的初始元素,並且不是左值。
來源
2013-03-28 18:02:36
md5
即使使用正確的文字類型,也不能這樣做。使用'std :: string'。 – chris
那麼,取決於這是C還是C++,std :: string可能不是一個選項。 – Inisheer
''pcs''是一個多字符字符常量,它有一個實現定義的類型爲'int'的值。這是一種非常少用的語言功能,但它可能會產生令人困惑的錯誤消息(如果特別不幸的話,根本沒有錯誤消息)。 –