장문이라 보기 불편하시겠지만 한번만 도와주세요 ㅜㅜ

c언어에서 헤더파일을 이용해 소스코드를 만드는 상황입니다.

헤더파일은 아래에 적어놨고 헤더파일 내 main함수를 int hang(){}형태로 바꿔 놓았습니다.


문제는 

소스코드에서 main함수에 

int main() {

    hang();

    return 0;

}

형태로 헤더파일을 불러와 실행시키면 정상적으로 작동하는데

int main() {

    int a;

    scanf_s("%d", &a);

    switch (a) {

        case 1:

            hang();

    }

 return 0;  

}

형태로 실행시키면 오류가 발생한다는 점입니다.

헤더파일을 수정하지도 않았는데 switch문 (if문 while문을 사용해봐도 똑같음..)을 사용하니 오류가 발생하는 이유를 도통 모르겠습니다. 이유가 뭔가요..?






아래는 헤더파일입니다

//함수

void game_start();

void game_set();//game 진행상태 출력

void check_word(char input_word);

void prevent_overlap(char input_word);

void print_input_word();

void decide_clear();

int my_strlen(char* string);

#define word_num 20


//전역 변수

char ans[30];

char dic[word_num][15] = { {"rhythm"}, {"spring"}, {"earthquake"}, {"wireless"}, {"planetarium"},

    {"okay"}, {"beautiful"},{"termproject"},{"hard"}, {"complexity"},{"mandate"},{"profitable"},

    {"invulnerable"},{"bear"},{"dry"},{"jazz"},{"kite"},{"apple"},{"alphabet"},{"part"} };

char input_word;//입력받은 알파벳

int selected_num;//임의로 선택된 dic 단어

int life = 10;//기회

int p = 0;//ans의 위치, 횟수

int t, judge;

int i, j, hap_miss;


int hang(void) {

    game_start();

    do {

        hap_miss = 0;

        printf("Life: %d\n", life);

        game_set();

        print_input_word();

        printf("알파벳을 입력하세요:");

        scanf_s("%c", &input_word, 1);

        getchar();


        prevent_overlap(input_word);//중복여부 판별


        check_word(input_word);//단어의 속성 판별

        decide_clear();//게임의 종료 여부 판


        Sleep(1500);//화면 Clean

        system("cls");

    } while (t < 2);


    return t;



}


void game_start() {

    printf("★☆행맨게임★☆\n\n");

    Sleep(2000);

    system("cls");

    p = 0;

    t = 0;

    life = 10;

    do {

        ans[0] = 0;

        for (i = 1; i < 30; i++)ans[i] = '\0';

        t = 1;

    } while (t == 0);

    srand((unsigned)time(NULL));

    selected_num = rand() % word_num;

}

void game_set() {

    for (i = 0; i < my_strlen(dic[selected_num]); i++) {

        printf("_ ");

        for (j = 0; ans[j] != '\0'; j++) {

            if (dic[selected_num][i] == ans[j]) printf("\b\b%c ", dic[selected_num][i]);

        }

    }

    printf("총 %d글자입니다!", i);

}

void prevent_overlap(char input_word) {//중복된 단어 체크

    judge = 0;

    for (i = 0; ans[i] != '\0'; i++) {

        if (ans[i] == input_word) {

            judge = 1;

        }

    }

    if (judge == 1) {

        system("cls");

        printf("중복된 알파벳을 입력하셨습니다..\n");

        Sleep(1000);

        system("cls");

        hap_miss++;

    }

    else {

        ans[p] = input_word;

        p++;

    }

}


void check_word(char input_word) {//단어가 맞았는지 틀렸는지 체크

    judge = 0;

    for (i = 0; i < my_strlen(dic[selected_num]); i++) {

        if (ans[p - 1] == dic[selected_num][i]) {

            judge = 1;

        }

    }

    if (judge == 0) {

        if (hap_miss == 0) {

            system("cls");

            printf("틀렸습니다..\n");

            Sleep(1000);

            system("cls");

        }

        printf("Life가 1 감소합니다..");

        life -= 1;

    }

    else {

        if (hap_miss == 0)printf("맞았습니다!");

        else {

            printf("Life가 1 감소합니다..");

            life -= 1;

        }

    }

}


void decide_clear() {

    judge = 0;

    for (i = 0; i < my_strlen(dic[selected_num]); i++) {

        for (j = 0; ans[j] != '\0'; j++) {

            if (dic[selected_num][i] == ans[j]) judge += 1;

        }

    }

    if (life > 0) {

        if (judge == my_strlen(dic[selected_num])) {

            system("cls");

            printf("...\n");

            Sleep(1000);

            printf("....\n");

            Sleep(1000);

            printf(".....\n");

            Sleep(1000);

            printf("Game Clear!");

            Sleep(2000);

            system("cls");

            t = 2;

        }

    }

    else {

        system("cls");

        printf("...\n");

        Sleep(1000);

        printf("....\n");

        Sleep(1000);

        printf(".....\n");

        Sleep(1000);

        printf("\nGame Over..\n");

        printf("정답은: %s", dic[selected_num]);

        Sleep(2000);

        system("cls");

        t = 3;

    }

}


void print_input_word() {//입력된 단어 출력

    printf("\n지금까지 입력한 단어:");

    for (i = 0; ans[i] != '\0'; i++) printf("%c ", ans[i]);

    printf("\n");

}

int my_strlen(char* string) {

    int count = 0;

    while (string[count] != '\0')count++;

    return count;

}