포인터 배열 코드 질문 ㅠㅠ
바나나맛캔디
질문 제목 :
포인터 2차원 배열 함수 전달인자가 잘못 된거 같긴한데...
한다고 해봤는데 잘 안되네요 ㅠ_ㅠ 학생수를 2라고 입력시 두번째 입력 받으면서 프로그램이 죽어버려요
질문 내용 : int main()
{
char**name; //이름저장 int 2차원 배열
int**cnt=0; //점수 저장 int포인터 배열
mInput(&name,&cnt,&num);
mOutput(&name,&cnt,&num);
} //메인 함수 부분에서 인자전달은 이런식으로 했어요 (중간에 메뉴 선택부분은 생략//)void mInput(char***name,int***cnt,int*num) //이렇게 받아서
{
system(cls);
int i,j;
printf(\n\n\n\n\n\n\n\n);
printf(\t\t\t\1번 성적 입력하기 메뉴입니다.\\n);
printf(\n);
printf(\t\t학생수 입력 : );
scanf(%d,num); *cnt=(int**)malloc(sizeof(int*)*(*num)); //행 부분 메모리 할당
*name=(char**)malloc(sizeof(char*)*(*num)); for(i=0;i*num;i++) //열 부분 메모리 할당
{
*name[i]=(char*)malloc(sizeof(char)*(11));
printf(\t\t이름입력: );
scanf(%s,name[i]); *cnt[i]=(int*)malloc(sizeof(int)*3);
printf(\t\t국어, 영어, 수학 성적 입력 : );
for(j=0;j3;j++)
{
scanf(%d,&cnt[i][j]);
}
}
}
void mOutput(char***name,int***cnt,int*num)
{
system(cls);
int i,j;
for(i=0;i(*num);i++)
{
printf(%s ,name[i]); //이름 출력
for(j=0;j3;j++)
{
printf(%d ,cnt[i][j]); //점수 출력
}
printf(\n);
}
}
-
이름이없다고
저도 궁금하더군요.
디버깅 해보시면 아시겠지만 동적할당이 생각대로 안됐을 겁니다.
저도 함수 내에서 2차배열 동적할당을 위해서 님처럼 2중 포인터를 3중 포인터로 받아서
동적할당 하려고 해봤으나... 디버깅 해보면 공간이 하나밖에 생성이 안돼서
데이터를 2칸째부터 넣으려 하면 에러가 뜨더군요.
어떤 고수님께서 답변을 올려주시길.. ㅎ;