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. // モンスターを生成する関数
  11. Monster creMonster() {
  12. int i, k;
  13. Monster tmp;
  14. k = rand() % 8 + 4; // 名前の長さ(4〜11文字)
  15. for(i = 0; i < k; i++) {
  16. tmp.na[i] = 'a' + rand() % 26; // 小文字アルファベット
  17. }
  18. tmp.na[k] = '\0'; // 文字列終端
  19. for(i = 0; i < 6; i++) {
  20. tmp.stts[i] = rand() % 255 + 1; // ステータス(1〜255)
  21. }
  22. return tmp;
  23. }
  24.  
  25. // モンスターを表示する関数
  26. void priMonster(Monster m) {
  27. printf("%12s : ", m.na);
  28. for(int i = 0; i < 6; i++) {
  29. printf("%3d ", m.stts[i]);
  30. }
  31. printf("\n");
  32. }
  33.  
  34. int main() {
  35. srand((unsigned)time(NULL)); // 乱数の種
  36.  
  37. int i, n;
  38. Monster *monsters;
  39.  
  40. printf("モンスターの数を入力してください:");
  41. scanf("%d", &n);
  42.  
  43. // monsters に n 体のモンスターの領域を確保する
  44. monsters = (Monster *)malloc(sizeof(Monster) * n);
  45.  
  46. // メモリ確保のエラーチェック
  47. if(monsters == NULL) {
  48. printf("ERROR\n");
  49. return 0;
  50. }
  51.  
  52. // モンスター生成&表示
  53. for(i = 0; i < n; i++) {
  54. monsters[i] = creMonster();
  55. printf("%03d ", i + 1);
  56. priMonster(monsters[i]);
  57. }
  58.  
  59. // メモリ解放
  60. free(monsters);
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0s 5288KB
stdin
1
stdout
モンスターの数を入力してください:001         ajxdv  : 145  95 110  22 203 206