#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
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));
memset(matrix[i], 0, sizeof(char) * (n+1));
}
for (int i = 0; i < m; i++) {
scanf("%s", &matrix[i]);
}
for (int x = 0; x < m; x++) {
for (int y = 0; y < n; y++) {
if (matrix[x][y] == '*') {
continue;
}
else {
밑줄친 부분에서 오류가 나는데 어째서 오류가 나는지 모르겠습니다.
액세스 위반이 발생했다는데, 문제는 x,y값 모두 0입니다.
현재 코드로는 알 수 없습니다.
단, 문제가 되는 부분은
matrix[i] = malloc(sizeof(char) * (n+1));
memset(matrix[i], 0, sizeof(char) * (n+1));
다음과 같이 고칩니다.
matrix[i] = malloc(sizeof(char) * n+1);
memset(matrix[i], 0, sizeof(char) * n+1);
scanf도 다음과 같이 고칩니다.
scanf("%s", &matrix[i]);
&가 필요없습니다.
scanf("%s", matrix[i]);
또한, 심사에 제출한 코드를 보면 matrix는 char 배열이므로 0을 숫자가 아닌 문자로 넣습니다.
matrix[x][y] = 0;
문자로 넣기
matrix[x][y] = '0';
중간에 printf로 \n을 출력하면 심사가 비교하는 형식이 틀리니 통과할 수 없습니다.
system 함수는 심사에서 사용할 수 없는 함수이니 통과되지 않습니다. 삭제해야 합니다.
이러면 제출한 심사 코드로도 문제는 통과합니다.