이 문제는 근본적인 문제임을 알고 있습니다. 나는 스도쿠 게임을 만들려고 노력 해왔다. 인수는 주 (main)에 전달함으로써 주어집니다. ** argv보다 다른 배열에 쓰기를 시도 할 때 정수 변수를 증가시킬 때 세그먼트 오류가 발생합니다.주에게 인수를 전달할 때 분할 오류가 발생했습니다.
int **ft_copy_sudoku(int argc, char **argv)
{
int **sudoku_arr;
int index;
int s_index;
int j;
printf("%d", argc);
sudoku_arr = (int **)malloc(sizeof(int) * 9 * 9);
index = 1;
while (index < argc)
{
j = 0;
s_index = 0;
//sudoku_array[s_index] = (int *)malloc(sizeof(int) * 9);
while (j < 9)
{
if (argv[index][j] >= '1' && argv[index][j] <= '9')
sudoku_arr[s_index][j] = argv[index][j] - '0';
else
argv[index][j] = 0;
j++;
s_index++;
}
index++;
}
return sudoku_arr;
}
void ft_print_sudoku(int **sudoku)
{
int i;
int j;
i = 0;
while (i < 9)
{
j = 0;
while (j < 9)
{
printf("%d ", sudoku[i][j]);
j++;
}
i++;
printf("\n");
}
}
int main(int argc, char **argv)
{
ft_print_sudoku(ft_copy_sudoku(argc, argv));
return (0);
}
gdb로 디버깅 할 때 다음 메시지가 나타납니다. 당신의 동적 테이블을 할당하려는 나타납니다 명령 줄 매개 변수가 자리 당 구 개 문자 세트에 + 마커의 시퀀스는 (그리고 당신이 이들의 구에있는) 가정에가는
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000004007a6 in ft_print_sudoku (sudoku=0x1060420) at puzzle.c:62
62 j++;
그리고'puzzle.c : 62'는 무엇입니까? – alk
내 게시물의 마지막 줄이었습니다. j ++; 그 중 하나를 제거했는데 문제가되는 줄은 39 번째 것입니다. sudoku_arr [s_index] [j] = argv [index] [j]; – Cornul11
디버거는 오류가 발생한 행뿐만 아니라 그 이상을 알릴 수있을뿐만 아니라 프로그램이 충돌 할 때 정확히 알 수 있도록 모든 변수 (예 :'j')의 내용을 인쇄 할 수 있습니다. –