Я не уверен, почему я получаю ошибку сегментации в моем коде. Однако я знаю, что это происходит в блоке while(*word == *grid_char)
. Я также пытаюсь удалить код в нем и посмотреть, что происходит, и я все еще получаю ошибку ошибки сегментации. Однако, если я удаляю этот цикл while полностью, ошибка исчезает.
Я знаю, что такое ошибка сегмента, но не могу понять, почему в этом случае возникает ошибка. Я также не знаю, как его отладить.
Вот мой код.
char grid[(MAX_DIM_SIZE + 1) * MAX_DIM_SIZE + 1];
char dictionary[MAX_DICTIONARY_WORDS * (MAX_WORD_SIZE + 1 ) + 1 ];
int dictionary_idx[MAX_DICTIONARY_WORDS];
char *grid_char;
char *match_word;
int grid_idx = 0;
char *word = dictionary + dictionary_idx[0];
int word_found = 0;
int max_grid_height = row; // max y (max_grid_height) on grid
int row = 0;
int grid_clm = 0;
// print_char(grid[18]);
while (grid[grid_clm] != '\n')
{
row = 0;
while(row < max_grid_height)
{
word = dictionary + dictionary_idx[0]; //first char from dictionary ***
while(*word != '\0')
{
// print_char(*word);
int match_row = row; // back to start point grid - using this to compare potential match
match_word = word; // back to start point dict - using this to compare potential match
grid_char = grid[grid_clm + max_grid_length*match_row];
print_char(grid_char);
print_char(*word);
print_char(*(match_word+1));
print_char(' ');
while(*word == *grid_char)
{
match_row++;
match_word++;
if ((*match_word == '\n' || *match_word == '\0'))
{
print_char('F');
continue;
}
if(match_row >= max_grid_height){
break;
}
grid_char = grid[grid_clm + max_grid_length*match_row];
}
// next dictionary word
while(*word != '\n' && *word != '\0'){
word++;
}
if (*word == '\0'){
break;
}
word++;
// print_char(' ');
}
row++; //next grid row
}
grid_clm++; //next grid column
}