c언어 공부하고 있는 대학생입니다. c언어 과제하던 중에 while 루프에서 정수 입력받고, 정수에 따라 조건문 실행하도록 했는데....정수가 아닌 문자열을 입력했을 때 자꾸 scanf에서 반환값이 0이 나옵니다. 그래서 정수 0을 입력했을 때의 조건문이 계속 실행됩니다.  혹시 함수가 실행되었는지 확인할 수 있는 함수가 있을까요...? 아니면 다른 해결방안이 있을 까요? 이거에서 막혀서 새벽동안 계속 붙잡고 있는데도 안됩니다. 도와주세요....

아래는 코드입니다.

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#pragma warning(disable:4996)


#define S_SIZE 50


typedef struct NODE {

    int number;

    int year;

    int check;

    char title[S_SIZE];

    struct NODE* link;

}NODE;


void search_out(char title[S_SIZE]);

void search_in(char title[S_SIZE]);

void add(NODE** list);

void print_book();

void book();

void start();

int get_num();

NODE* create();

NODE* list = NULL;

int number = 0;

int temp = 0;



int main() {

    NODE* prev, * p, * next;

    char title[S_SIZE];

    int year;

    int temp = 0;

    prev = NULL;

    int check_counter = 0;

    int choice = 8;

    int c = 0;



    printf("연결형 리스트를 이용한 도서관리 프로그램\n\n");


    while (choice != 4)

    {

        c = 0;

        start();

        scanf("%d", &choice);


        switch (choice)

        {


        case 0:

        {

            add(&list);

            printf("\n");

            break;

        }

        case 1:

        {

            if (number == 0)

            {

                printf("책이 없습니다.\n");

            }

            else

            {

                printf("대여할 책의 제목을 입력하시오:");

                scanf("%s", title);

                search_out(title);

                printf("\n");

            }

            break;

        }

        case 2:

        {

            if (number == 0)

            {

                printf("책이 없습니다.\n");

            }

            else

            {

                printf("반납할 책의 제목을 입력하시오:");

                scanf("%s", title);

                search_in(title);

                printf("\n");

            }

            break;

        }

        case 3:

        {

            if (number == 0)

            {

                printf("책이 없습니다.\n");

            }

            else

            {

                print_book();

                printf("\n");

            }

            break;

        }

        case 4:

        {

            book();

            printf("\n");

            break;

        }

        default:

        {

            while (getchar() != '\n')

            {

                if (c == 0)

                {

                    printf("잘못 입력하였습니다.\n");

                }

                c++;

            }

            break;

        }


        }

    }

    return 0;

}


void start()

{

    printf("=====================\n");

    printf("0. 신규 등록\n");

    printf("1. 도서 대출\n");

    printf("2. 도서 반납\n");

    printf("3. 목록 출력\n");

    printf("4. 종료\n");

    printf("=====================\n");

}

NODE* create()

{

    int year;

    char title[S_SIZE];

    NODE* p = (NODE*)malloc(sizeof(NODE));

    NODE* q;

    int j = 0;


    printf("등록할 책의 제목을 입력하시오:");

    scanf("%s", title);

    for (q = list; q; q = q->link)

    {

        if (strcmp(q->title, title) == 0)

            j++;

    }

    if (j != 0)

    {

        printf("이미 등록된 책입니다.\n");

        return 0;

    }

    else

    {

        printf("책의 출판 연도를 입력하시오:");

        scanf("%d", &year);


        p->check = 0;

        p->number = number;

        strcpy(p->title, title);

        p->year = year;


        p->link = NULL;


        number++;

        printf("%s를 성공적으로 등록하였습니다.\n", title);


        return p;

    }

}

void add(NODE** list)

{

    NODE* new = create();

    if (*list == NULL)

    {

        *list = new;

    }

    else

    {

        NODE* p = *list;

        while (p->link != NULL)

        {

            p = p->link;

        }

        p->link = new;

    }

}

void search_out(char title[S_SIZE])

{

    NODE* p;

    int i = 0;


    for (p = list; p; p = p->link)

    {

        if (strcmp(p->title, title) == 0)

        {

            i++;

            if (i != 0 && p->check == 0)

            {

                printf("%s 를 대출에 성공하였습니다.\n", p->title);

                p->check++;

            }

            else if (i != 0 && p->check == 1)

            {

                printf("%s 가 이미 대출중입니다.\n", p->title);

            }

        }


    }


    if (i == 0)

    {

        printf("%s 가 존재하지 않습니다.\n", title);

    }


}

void search_in(char title[S_SIZE])

{

    NODE* p;

    int i = 0;


    for (p = list; p; p = p->link)

    {

        if (strcmp(p->title, title) == 0)

        {

            i++;

            if (i != 0 && p->check == 1)

            {

                printf("%s 반납에 성공하였습니다.\n", p->title);

                p->check--;

            }

            else if (i != 0 && p->check == 0)

            {

                printf("%s 는 대출중인 책이 아닙니다.\n", p->title);

            }

        }


    }

    if (i == 0)

    {

        printf("%s 가 존재하지 않습니다.\n", title);

    }


}

void print_book()

{

    NODE* p = list;



    while (p != NULL)

    {

        printf("순서 %d, 출판연도 %d, 대출여부 %d, 제목 %s,\n", p->number, p->year, p->check, p->title);

        p = p->link;

    }


}

void book()

{

    NODE* p = list;

    NODE* next;


    while (p != NULL)

    {

        next = p->link;

        free(p);

        p = next;

    }

    printf("메모리를 모두 반납하였습니다.\n");

}