#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
char** matrix = malloc(sizeof(char*) * m);
for (int i = 0; i < m; i++)
matrix[i] = malloc(sizeof(char) * (n + 1));
for (int i = 0; i < m; i++)
scanf("%s", matrix[i]);
int** arr = malloc(sizeof(int*) * m);
for (int i = 0; i < m; i++)
arr[i] = malloc(sizeof(int) * n);
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
int count = 0;
if (matrix[i][j] == '*')
arr[i][j] = -1;
else
{
if (matrix[i - 1][j - 1] == '*')
count++;
if (matrix[i - 1][j] == '*')
count++;
if (matrix[i - 1][j + 1] == '*')
count++;
if (matrix[i][j - 1] == '*')
count++;
if (matrix[i][j + 1] == '*')
count++;
if (matrix[i + 1][j - 1] == '*')
count++;
if (matrix[i + 1][j] == '*')
count++;
if (matrix[i + 1][j + 1] == '*')
count++;
arr[i][j] = count;
}
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i][j] == -1)
printf("%c", '*');
else
printf("%d", arr[i][j]);
}
printf("\n");
}
for (int i = 0; i < m; i++)
free(matrix[i]);
free(matrix);
for (int i = 0; i < m; i++)
free(arr[i]);
free(arr);
return 0;
}
-------------------------------------------------------------------------------------------------------------
코드를 위와 같이 짜보았습니다.
Visual Studio에서 Ctrl+F5를 눌러서 실행해 보면 숫자 입력과 행렬 입력까지는 됩니다. 하지만 출력이 아무것도 안 나오는데 어느 곳이 문제인지 모르겠습니다ㅜㅜ
포럼 상단 오른쪽 검색창에 38.8로 검색하면 이전 질문과 답변을 볼 수 있습니다.
UNIT 6 디버거를 학습하고 디버거로 값을 살펴보세요.
3 3
...
...
..*
기본 입력을 했을 때 자동 검색창에서 변수의 값을 보면 j = 0입니다.
matrix[i - 1][j - 1]로 접근하게 되는데, i 값을 몰라도
matrix[NN][-1]은 접근할 수 없다는 것은 알 수 있습니다.
배열 범위를 벗어난 접근 때문에 오류가 발생하고 결과가 출력되지 않습니다.
코드에 대한 디버깅은 답변할 수 없습니다.
디버거를 사용하고, 단계별 실행으로 값의 상태를 파악하세요.