2 차원 배열의 홍수 채우기 알고리즘을 구현하려고합니다.홍수 채우기 구현을 시도하는 분할 오류
문제점은 세그먼트 화 오류가 발생하여 실행하려고 할 때입니다. 여러 가지를 시도했지만 문제가 무엇인지 파악할 수 없습니다.
것은 나는이 입력을하려고 해요 : 오류의 http://pastebin.com/raw/puexQfXY
스크린 샷 : 함수 자체 내부의 함수를 호출하는 동안 수행해야 https://gyazo.com/b7e738d1d4f09a5d71a020b34a1e3b6c
#include <stdio.h>
#include <stdlib.h>
void floodFill(int width, int height, char grid[width][height], char replacement, char target, int x, int y)
{
if(x < 0 || x >= width || y < 0 || y >= height)
{//check if out of array
return;
}
if(grid[x][y] != target)
{//check if on other than the target
return;
}
grid[x][y] = replacement; //replace
floodFill(grid, width, height, replacement, target, x + 1, y);//right
floodFill(grid, width, height, replacement, target, x, y + 1);//down
floodFill(grid, width, height, replacement, target, x - 1, y);//left
floodFill(grid, width, height, replacement, target, x, y - 1);//up
}
int main()
{
int width, height;
scanf("%d", &width);
scanf("%d", &height);
char grid[width][height];
for(int y = 0; y < height; y++)
{
getchar();//absorb newline
for(int x = 0; x < width; x++)
{
grid[x][y] = getchar();
}
}
floodFill(width, height, grid, 'O', '.', 2, 1);
for(int y = 0; y < height; y++)
{//print array
for(int x = 0; x < width; x++)
{
putchar(grid[x][y]);
}
putchar('\n');
}
}
당신의 컴파일러는 심지어 컴파일해서는 안된다. 흠, 그것을 시도하고 그것은 8 경고와 컴파일합니다. 경고가 표시되지 않으면 gcc의 경우 -Wall, Microsoft의 경우 clang 또는'/ W4 '로 다시 시도하십시오. – user3386109
다음과 같이'getchar'을 몇 줄 아래로 이동하여 루프 안에 넣거나'dumpf '를 덤프하고'scanf ("% c", & grid [x] [y]);'(선행 공백을 소비하는 공간에주의하십시오) . –
그 이유는 무엇입니까? offece가 없다. 왜 지금은 작동하는지 이해하지 못한다. –