2차배열 동적할당 오류
아놀드
질문 제목 : 2차배열 동적할당 오류질문 요약 :카드수 n을 입력받고 2의 n승만큼의 2차배열을 생성
각 배열에 수를 넣고 출력하는 함수! 입니다.질문 내용 :
#include stdio.h
#include stdlib.h
#include malloc.h
int main(void)
{
//***********필요한 변수 선언************
int n,y,x,i,c;
int **arr;
c=1;
y=0;
//***************************************
//행의 수를 입력 받음
printf(카드 수 입력 :);
scanf(%d, &n);
//행 동적 할당
arr = (int**)malloc(sizeof(int*)*n);
//2의 n승을 계산=c
while(y!=n)
{
c=c*2;
y++;
}
printf(c:%d\n,c);
//각 행마다 열 동적 할당
//c만큼의 열을 생성
for(i = 0; i = c; i++)
{
arr[i] = (int*)malloc(sizeof(int)*c);
}
//그럼 총 n의 행과 c의 열이 생성
for(i=0;in;i++)
{
for(x=0;xc;x++)
{
printf(각 행과 열을 입력:);
scanf_s(%d,&arr[i][x]);
}
}
for(i=0;in;i++)
{
for(x=0;xc;x++)
{
printf(각 행과 열을 출력:%d\n,arr[i][x]);
}
}
for(i=0;in;i++){
free(arr[i]);
}
//행 포인터 free
free(arr);
return 0;
}
이렇게 프로그램을 돌리면
요렇게 떠요 메모리오류 같은데 어디가 잘못된건지 설명을좀ㅠㅠ
부탁드립니다!
-
너만
아하....아이고 갈수록 어렵네요 ㅠㅠ 정말 감사합니다!!!
-
도널드
정확히는
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
가 되겠네요.....
n만큼만 반복시켜야
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
이 되겠죠... -
권시크
음 입력받는n이 2고 c는 4가 되고 그래서 원한 그림은
c0 c1 c2 c3
n0ㅁ ㅁ ㅁ ㅁ
n1ㅁ ㅁ ㅁ ㅁ
이거였는데 틀린건가요? ㅠㅠ -
소희
이렇게 생각하시면
c는 4가되고
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
이렇게 생성되잖아요... -
한누리
for(i = 0; i = c; i++)
{
arr[i] = (int*)malloc(sizeof(int)*c);
}
이 부분이 2차배열을 생성하는 for문 아닌가욤?? c는2의 n승을 while문으로 돌려서 만들어준건데... -
꽃은별
그럼 제가 쓴것처럼 되어야 할텐데요..
-
그린나래
넵넵넵!!!!! 맞아요
-
흡뜨다
그니깐 음,,,,
n이 2일때
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
이런식으로 되야되는거 아닌가요? -
작약
음...저는 n개 1차배열이랑 c개의 2차배열을 만든거에용 ㅠㅠ
-
미르
for(i = 0; i = c; i++)
{
arr[i] = (int*)malloc(sizeof(int)*c);
}
여기서
for(i=0;in;i++)
이어야 하지 않나요?