fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h> //乱数の生成のため
  4.  
  5. typedef struct {
  6. char na[64];
  7. int stts[6];
  8. } Monster;
  9.  
  10. Monster creMonster(){
  11. int i, k;
  12. Monster tmp;
  13. k = rand() % 8 + 4;
  14. int a = 'a' + rand() % 26;
  15. for (i = 0; i < k; i++) tmp.na[i] = 'a' + rand() % 26;
  16. tmp.na[k] = '\0';
  17. for (i = 0; i < 6; i++) tmp.stts[i] = rand() % 255 + 1;
  18. return tmp;
  19. }
  20.  
  21. void priMonster(Monster m) {
  22. printf("%12s : ", m.na);
  23. for (int i = 0; i < 6; i++)
  24. printf("%3d ", m.stts[i]);
  25. printf("\n");
  26. }
  27.  
  28. int main() {
  29. srand((unsigned)time(NULL)); //乱数を生成する時のおまじない
  30. int i, n;
  31. Monster *monsters;
  32.  
  33. // ユーザーからモンスターの数を入力
  34. scanf("%d", &n);
  35.  
  36. // ここでモンスターの配列を動的に確保する
  37. monsters = (Monster *)malloc(n * sizeof(Monster));
  38.  
  39. // メモリ確保のエラーチェック
  40. if (monsters == NULL) {
  41. printf("ERROR\n");
  42. return 0;
  43. }
  44.  
  45. // n体のモンスターを生成して表示
  46. for (i = 0; i < n; i++) {
  47. monsters[i] = creMonster();
  48. printf("%03d ", i + 1);
  49. priMonster(monsters[i]);
  50. }
  51.  
  52. // 動的に確保したメモリを解放
  53. free(monsters);
  54.  
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0.01s 5284KB
stdin
2
stdout
001        lugzsj  : 118  54  67  77  89 226 
002     etomecehj  :  73  40  60 233  28  31