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이라고 하네요. 왜 그런가요?
댓글 입력