3つの列、xcoor、ycoor、および2文字のシンボルを含むテキストファイルを、残りのスペースがいっぱいになるようにシンボルの2番目の文字を出力する30x30マップに変換するコードを取得しようとしています。 a '。'しかし、私のコードは実行されていないようで、テキストファイルを入力しようとするとセグメンテーションエラーが発生します。何が間違っていますか?事前のおかげでセグメンテーションエラー、私のコードには何がありませんか?
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;
}
コードが失敗する箇所をデバッガで調べてみてください。ところで、コードはほとんど読めません。ハードコーディングされた数字が成功する最良の方法:-) – Klaus
「xcoor-1」と「ycoor-1」を検証する[assertions](http://en.cppreference.com/w/c/error/assert)を追加してください'[0、30]'の有効範囲内にあります。 –
1) 'xcoor'は初期化されていません。 2)無効な入力がある場合は、入力バッファー(stdin)をクリアする必要があります。 – BLUEPIXY