fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. // 10,"test" を 20,"TEST" に
  5.  
  6. typedef struct
  7. {
  8. char x; // 8 bit (int は 32 bit)
  9. char c[5]; // 8 bit
  10. }hoge_t;
  11.  
  12. void main()
  13. {
  14. hoge_t hoge;
  15. char s[]="test";
  16. int i;
  17. char value[]={20,0x54,0x45,0x53,0x54}; // 20,"TEST"
  18. // hoge の初期化 ("test", 10 を入れる)
  19. for(i=0;i<sizeof(s);i++) hoge.c[i]=s[i];
  20. hoge.x=10;
  21. // 表示
  22. printf("%d ", hoge.x);
  23. printf("%s", hoge.c);
  24. printf("\n");
  25.  
  26. // for(i=0;i<sizeof(value);i++) hoge[i]=value[i]; // こう言う具合に代入したかったが以下のエラーが発生
  27. // エラー E2110 test.c 24: 互換でない型変換(関数 main )
  28. // エラー E2062 test.c 24: 無効な間接参照(関数 main )
  29. // 上記のように一括で代入できないので、以下のように2行で代入する
  30. //hoge.x=value[0];
  31. //for(i=1;i<sizeof(value);i++) hoge.c[i-1]=value[i];
  32.  
  33. memcpy(&hoge, value, sizeof(value));
  34.  
  35. // 表示
  36. printf("%d ", hoge.x);
  37. printf("%s", hoge.c);
  38. printf("\n");
  39.  
  40. }
  41.  
Runtime error #stdin #stdout 0s 2052KB
stdin
Standard input is empty
stdout
10 test
20 TEST