C 포인터 오류

조회수 383회

이거는 func.c 부분에 정의된 Insert 함수로 MenuPrint라는 함수내에서 실행되는 함수입니다.

void Insert(PhoneBook* Book[], int* idx, int* mal) {
    printf("[ INSERT ]\n");
    printf("Input Name: ");
    scanf_s("%s", Book[*idx]->name); // 예외가 throw됨. idx가 nullPtr이었습니다.
    printf("Input Tel Number: \n");
    scanf_s("%s", Book[*idx]->phNum);
    printf("                Data Inserted\n");
    *idx++;
    if (*idx == *mal) {
        *mal += 1;
        Book = (PhoneBook*)realloc(Book, sizeof(PhoneBook) * (*mal));
    }
}

아래는 main함수입니다.

int main(void)
{       
    int malNum = 3, idxNum = 0;
    int* idx = &idxNum;
    int* mal = &malNum;
    PhoneBook* BookList[3];
    for (int i = 0; i < sizeof(BookList) / sizeof(PhoneBook*); i++) {
        BookList[i] = malloc(sizeof(PhoneBook));
    }

    while (1) {
        MenuPrint(BookList,*idx, *mal);
    }

}

전화번호부를 만드는 프로그램인데 추가, 삭제, 검색, 출력의 기능이 담겨있고 전체를 가져오면 읽기 난해할것 같아 오류난 부분만 가져왔습니다. 보시면 아시겠지만 구조체를 동적할당하여 필요할때마다 사이즈를 늘리는 식으로 만들었습니다.

문제는 제가 idxNum = 0으로 초기화해주고 MenuPrint에 인자로 *idx를 넣고 그걸 Insert에서도 마찬가지로 받게 해줬는데도 nullPtr이라고 하네요. 왜 그런가요?

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

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

(ಠ_ಠ)
(ಠ‿ಠ)