#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;
// 表示
// for(i=0;i<sizeof(value);i++) hoge[i]=value[i]; // こう言う具合に代入したかったが以下のエラーが発生
// エラー E2110 test.c 24: 互換でない型変換(関数 main )
// エラー E2062 test.c 24: 無効な間接参照(関数 main )
// 上記のように一括で代入できないので、以下のように2行で代入する
//hoge.x=value[0];
//for(i=1;i<sizeof(value);i++) hoge.c[i-1]=value[i];
memcpy(&hoge
, value
, sizeof(value
));
// 表示
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8vIDEwLCJ0ZXN0IiDjgpIgMjAsIlRFU1QiIOOBqwoKdHlwZWRlZiBzdHJ1Y3QKewoJY2hhciB4OyAvLyA4IGJpdCAoaW50IOOBryAzMiBiaXQpCgljaGFyIGNbNV07IC8vIDggYml0Cn1ob2dlX3Q7Cgp2b2lkIG1haW4oKQp7Cglob2dlX3QgaG9nZTsKCWNoYXIgc1tdPSJ0ZXN0IjsKCWludCBpOwoJY2hhciB2YWx1ZVtdPXsyMCwweDU0LDB4NDUsMHg1MywweDU0fTsgLy8gMjAsIlRFU1QiCgkvLyBob2dlIOOBruWIneacn+WMliAoInRlc3QiLCAxMCDjgpLlhaXjgozjgospCglmb3IoaT0wO2k8c2l6ZW9mKHMpO2krKykgaG9nZS5jW2ldPXNbaV07Cglob2dlLng9MTA7CgkvLyDooajnpLoKCXByaW50ZigiJWQgIiwgaG9nZS54KTsKCXByaW50ZigiJXMiLCBob2dlLmMpOwoJcHJpbnRmKCJcbiIpOwoKCS8vIGZvcihpPTA7aTxzaXplb2YodmFsdWUpO2krKykgaG9nZVtpXT12YWx1ZVtpXTsgLy8g44GT44GG6KiA44GG5YW35ZCI44Gr5Luj5YWl44GX44Gf44GL44Gj44Gf44GM5Lul5LiL44Gu44Ko44Op44O844GM55m655SfCgkJLy8g44Ko44Op44O8IEUyMTEwIHRlc3QuYyAyNDog5LqS5o+b44Gn44Gq44GE5Z6L5aSJ5o+bKOmWouaVsCBtYWluICkKCQkvLyDjgqjjg6njg7wgRTIwNjIgdGVzdC5jIDI0OiDnhKHlirnjgarplpPmjqXlj4Lnhaco6Zai5pWwIG1haW4gKQoJLy8g5LiK6KiY44Gu44KI44GG44Gr5LiA5ous44Gn5Luj5YWl44Gn44GN44Gq44GE44Gu44Gn44CB5Lul5LiL44Gu44KI44GG44Gr77yS6KGM44Gn5Luj5YWl44GZ44KLCgkvL2hvZ2UueD12YWx1ZVswXTsKCS8vZm9yKGk9MTtpPHNpemVvZih2YWx1ZSk7aSsrKSBob2dlLmNbaS0xXT12YWx1ZVtpXTsKCgltZW1jcHkoJmhvZ2UsIHZhbHVlLCBzaXplb2YodmFsdWUpKTsKCgkvLyDooajnpLoKCXByaW50ZigiJWQgIiwgaG9nZS54KTsKCXByaW50ZigiJXMiLCBob2dlLmMpOwoJcHJpbnRmKCJcbiIpOwoKfQo=