[c]입력문 입력시 종료됩니다.

조회수 807회

스위치 1번 캐릭터 입력에서 건강스탯 부문 입력시 코드가 종료되어 버립니다... 코드 봐주셔서 감사합니다!

#include<stdio.h>
#include<stdlib.h>
// 함수 원형선언
void menu();
typedef struct Create_Character create_character;
typedef struct Statistics statistics;
create_character *input_character();
void end();

// 구조체
typedef struct Create_Character{
    int character_num;
    char name[20];
    statistics *statistics;
}create_character;

typedef struct Statistics{
    int Health;
    int Wealth;
    int Power;
}statistics;

// 전체 캐릭터 수 (전역변수)
int total_character = 0;
create_character *character[5];

// 메인
void main(){
    int menu_num;
    menu();
    while(1){
        scanf("%d", &menu_num);
        switch (menu_num){
        case 1:
            if(total_character < 5){
               character[total_character] = input_character();
            }
            else{
                printf("생성 가능한 캐릭터가 없습니다.\n");
            }
            break;
        case 2:

            break;
        case 3:

            break;
        case 4:

            break;
        case 5:

            break;
        case 6:

            break;
        case 7:
            end();
            break;        
        default:
            printf("잘못 선택하셧습니다.\n");
            break;
        }
    }
}
//메뉴
void menu(){
    printf("1. 캐릭터 입력 (%d/5)\n", total_character);
    printf("2. 능력치 수정 (특정 캐릭터의 능력치 수정)\n");
    printf("3. 능력 평균과 합 출력\n");
    printf("4. 최대 능력자 출력\n");
    printf("5. 최소 능력자 출력\n");
    printf("6. 캐릭터 전체 출력\n");
    printf("7. 종료\n");
}

// 캐릭터 입력
create_character *input_character(){
    create_character *new;
    new = (create_character *)malloc(sizeof(create_character));
    new ->character_num = total_character+1;    //고유넘버
    printf("이름 : ");
    scanf("%s", new -> name);
    printf("건강(Health) : ");
    scanf("%d", &new -> statistics -> Health);
    printf("부(Wealth) : ");
    scanf("%d", &(new -> statistics ->Wealth));
    printf("힘(power) : ");
    scanf("%d", &(new -> statistics ->Power));
    return new;

    total_character = total_character + 1;
}

// 능력치 수정(특정 캐릭터의 능력치 수정)

//능력 평균과 합 출력

//최대 능력자 출력

// 최소 능력자 출력

//캐릭터 전체 출력

//종료
void end(){
    for(int num = 0; num < total_character; num++){
        free(character[num]);
    }
    exit(1);
}

출력

  1. 캐릭터 입력 (0/5)
  2. 능력치 수정 (특정 캐릭터의 능력치 수정)
  3. 능력 평균과 합 출력
  4. 최대 능력자 출력
  5. 최소 능력자 출력
  6. 캐릭터 전체 출력
  7. 종료 1 이름 : asd 건강(Health) : 1

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)