#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int row, col;
scanf("%d %d", &row, &col); // 함수 크기 입력 받음
char **matrix = malloc(sizeof(char *) * row); // 배열 세로
for(int i = 0; i < row; i++) // 배열 가로
{
matrix[i] = malloc(sizeof(char) * (col+1));
//memset(matrix[i], 0, sizeof(char)*(col+1));
}
for(int i = 0; i < row; i++) // 배열 문자열 사용자 입력
{
scanf("%s", matrix[i]);
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i][j] == '*')
matrix [i][j] = '*';
else
{
matrix[i][j] = 0;
for (int a = i - 1; a <= (i + 1); a++) // 세로 한칸 위부터 한칸 아래까지
{
if (a < 0 || a>row)
{
continue;
for (int b = j - 1; b <= (j + 1); b++) // 가로 한칸 전부터 한칸 다음까지
{
if (b < 0 || b>col)
{
continue;
if (matrix[a][b] == '*') // 위 범위에 *이 있다면
{
matrix[i][j] += 1; // 숫자 카운트
}
}
}
}
}
}
}
}
for (int i = 0; i < row; i++) // 프린트 파트
{
for (int j = 0; j < col; j++)
{
printf("%s", matrix[i][j]);
}
printf("\n");
}
for (int i = 0; i < row; i++)
{
free(matrix[i]);
}
free(matrix);
return 0;
}
버퍼오버런 경고가 계속 뜨고, 프린트가 아예 되지 않는데
어디가 틀린 건지 감이 오질 않아서요.. 제발 도와주세요
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int row, col;
scanf("%d %d", &row, &col); // 함수 크기 입력 받음
char **matrix = malloc(sizeof(char *) * row); // 배열 세로
for(int i = 0; i < row; i++) // 배열 가로
{
matrix[i] = malloc(sizeof(char) * (col+1));
memset(matrix[i], 0, sizeof(char)*(col+1));
}
for(int i = 0; i < row; i++) // 배열 문자열 사용자 입력
{
scanf("%s", matrix[i]);
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i][j] == '*')
matrix[i][j] = '*';
else if(matrix[i][j]== '.')
{
matrix[i][j] = '0';
for (int a = i - 1; a <= (i + 1); a++) // 세로 한칸 위부터 한칸 아래까지
{
if (a < 0 || a>row)
continue;
for (int b = j - 1; b <= (j + 1); b++) // 가로 한칸 전부터 한칸 다음까지
{
if (b < 0 || b>col)
continue;
if (matrix[a][b] == '*') // 위 범위에 *이 있다면
{
matrix[i][j] += 1; // 숫자 카운트
}
}
}
}
}
}
for (int i = 0; i < row; i++) // 프린트 파트
{
printf("%s\n", matrix[i]);
}
for (int i = 0; i < row; i++)
{
free(matrix[i]);
}
free(matrix);
return 0;
}
*을 탐색하는 루프가 잘못된 건가요?
답변을 이미 한 것으로 착각했습니다.
가치 없는 질문은 없습니다.
실패와 시행착오는 코딩 도장이 가장 중요하게 생각하는 가치입니다.
이 과정을 통해서만 프로그래밍을 제대로 배울 수 있기 때문이죠!
스스로 해결했다면 엄청나게 발전한 겁니다. 최소한 2차원 배열을 다루면서 막히는 일은 없을거라 자부해도 됩니다.
사실 대다수는 여전히 지뢰찾기 정도의 로직조차 짜지 못해서 신입사원 프로그래밍 면접 문제에 단골로 출제될 정도입니다.