まず、'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'' 型の式は '' 型の式に変換されます。配列オブジェクトの最初の要素を指し、左辺値ではない type'' へのポインター。