Я пытаюсь получить свой код для преобразования текстового файла с 3 столбцами, xcoor, ycoor и символом с 2 символами в карту 30x30, которая печатает второй символ символа, а остальные пробелы заполняются а '.' Однако мой код, похоже, не запускается, и я получаю ошибку сегментации, когда я пытаюсь ввести текстовый файл, что я делаю неправильно? Заранее спасибоОшибка сегментации, что отсутствует в моем коде?
int main(void)
{
char grid[30][30];
for(int i=0;i<30;i++){
for(int j=0;j<30;j++){
grid[i][j]='.';
}
}
int xcoor,ycoor;
char symbol[2];
while((xcoor!=0)||(scanf("%d",&xcoor)))
{
while(xcoor==0){
scanf("%d",&xcoor);
}
scanf("%d %c%c",&ycoor,&symbol[0],&symbol[1]);
grid[xcoor-1][ycoor-1]=symbol[1];
}
for(int i=0;i<30;i++){
for(int j=0;j<30;j++){
printf("%c ",grid[i][j]);
}
printf("\n");
}
return 0;
}
Попробуйте использовать отладчик и посмотрите, где сбой кода. BTW: Код почти нечитабель. Жестко закодированные номера - лучший способ успеха :-) – Klaus
Пожалуйста, добавьте [assertions] (http://en.cppreference.com/w/c/error/assert), которые подтверждают, что 'xcoor-1' и' ycoor-1' находятся в допустимом диапазоне '[0, 30]'. –
1) 'xcoor' неинициализируется. 2) Если есть недопустимый ввод, вам необходимо очистить входной буфер (stdin). – BLUEPIXY