#include <stdio.h>
#include <string.h>
#define  STR_LEN    50
#define  BOOK_INFO_NUM   3

typedef struct bookInfo{
    char bookTitle[STR_LEN];
    char bookPub[STR_LEN];
    int bookPrice;
}bookInfo;

int numOfData=0;                                                                ////////////이것의 전역변수 ㅠㅠ
bookInfo bookInfoList[BOOK_INFO_NUM];

int InsertList(bookInfo* bookPtr);

int main(void)
{
    int i, num;
    bookInfo book;
    
    puts("********* 도서 정보 입력 *********");
    for(i=0; i<BOOK_INFO_NUM; i++)
    {
        printf("%d번째 도서 정보 입력. \n", (i+1));
        
        fputs("도서 제목: ", stdout);
        gets(book.bookTitle);
        
        fputs("출판사 명: ", stdout);
        gets(book.bookPub);
        
        fputs("도서 가격: ", stdout);
        scanf("%d", &(book.bookPrice));
        fflush(stdin);
        
        num=InsertList(&book);
        if(num==-1)
            printf("입력에 실패하였습니다. \n");
        else
            printf("%d번째 입력 완료.......\n\n", num);
    }
    
    puts("********* 도서 정보 출력 *********");
    for(i=0; i<BOOK_INFO_NUM; i++)
    {
        printf("%d번째 도서 정보 출력. \n", (i+1));
        printf("도서 제목: %s \n", bookInfoList[i].bookTitle);
        printf("출판사 명: %s \n", bookInfoList[i].bookPub);
        printf("도서 가격: %d \n\n", bookInfoList[i].bookPrice);
    }
    
    return 0;
}

int InsertList(bookInfo* bookPtr)
{
    int idx;
    int inputIdx=numOfData;                                                                                //        여기는 두번째 모르는 저의문제..
    
    if(numOfData >= BOOK_INFO_NUM)                                                                        //        여기도 주석이 달려잇는데 잘모르겟어요.
        return -1; // -1은 입력 실패를 의미
        
    /** 입력 위치 찾기 **/
    for(idx=0; idx<numOfData; idx++)                                                                                                        //여기욧!!
    {
        if(strcmp(bookInfoList[idx].bookTitle, bookPtr->bookTitle) >0) 
        {
            inputIdx=idx;
            break;
        }
    }
    
    /** 입력이 가능하도록 자리를 마련 **/
    for(idx=numOfData; idx>inputIdx; idx--)
        bookInfoList[idx]=bookInfoList[idx-1];                                
    
    /** 새로운 데이터 입력 **/
    bookInfoList[inputIdx]=(*bookPtr);
    
    /** 입력 성공 시 입력된 데이터 개수 반환 **/
    return ++numOfData;
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

잘모르는 부분을 체크해보앗는데요
1번문제에서 의미하는 전역변수가 무엇을 의미하는지 도저히 모르겟어요..
두번째에서 아직도 저 전역변수의 값은 0이 아닌가요?
그 0 의 값이 inputldx 로 들어가면 inputldx도 값이 0이 되지않나요?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
그리고 그아래에서 문자열 비교해서
윗포문중에서요 
for(idx=0; idx<numOfData; idx++)

여기자체가 전역변수인 numofdata 값이 0인데 어떻게 조건값에서 0<0 인데 이게 어떻게 되어버리는건지..
많이 혼란스러워요..

잘 알아듣게 이해시켜주세요 ㅠ.. 

아랫쪽부분을 좀 심도잇게 알려주시면 정말 감사하겟습니다