#include <stdio.h>
#include <string.h>

// 10,"test" を 20,"TEST" に

typedef struct
{
	char x; // 8 bit (int は 32 bit)
	char c[5]; // 8 bit
}hoge_t;

void main()
{
	hoge_t hoge;
	char s[]="test";
	int i;
	char value[]={20,0x54,0x45,0x53,0x54}; // 20,"TEST"
	// hoge の初期化 ("test", 10 を入れる)
	for(i=0;i<sizeof(s);i++) hoge.c[i]=s[i];
	hoge.x=10;
	// 表示
	printf("%d ", hoge.x);
	printf("%s", hoge.c);
	printf("\n");

	// for(i=0;i<sizeof(value);i++) hoge[i]=value[i]; // こう言う具合に代入したかったが以下のエラーが発生
		// エラー E2110 test.c 24: 互換でない型変換(関数 main )
		// エラー E2062 test.c 24: 無効な間接参照(関数 main )
	// 上記のように一括で代入できないので、以下のように２行で代入する
	//hoge.x=value[0];
	//for(i=1;i<sizeof(value);i++) hoge.c[i-1]=value[i];

	memcpy(&hoge, value, sizeof(value));

	// 表示
	printf("%d ", hoge.x);
	printf("%s", hoge.c);
	printf("\n");

}
