私は以下のコードを実行しようとしています。scanfは第2引数を読み取っていません
私は、3つの異なる0
と30
間の最初の二つは整数で入力、そして第三に@
から始まる文字列を取るためにscanf
機能が欲しいです。
プログラムは正常にコンパイルされますが、座標とそれに関連する@
シンボルを入力しようとすると、の座標の場所に0
が表示されます。
これがなぜ起こっているのか、それを修正するために何ができるのか誰にも分かりますか?以下 コードあなたがXは、いくつかの単一文字の文字列、のため@ Xをentreringていると仮定すると、
#include <stdio.h>
int main(){
int grid[30][30];
int i, j;
for(i=0; i<30;i++){
for(j=0; j<30;j++){
grid[i][j]='.';
}
}
int x_coord;
int y_coord;
char type[2];
scanf("%d %d %s",&x_coord,&y_coord,type);
/*added extra whitespace*/
printf("%i %i %s",x_coord,y_coord,type);
printf("\n");
grid[x_coord][y_coord]=type[1];
//end outer loop
for(i=0; i<30;i++){
for(j=0; j<30;j++){
printf("%c",grid[i][j]);
}
printf("\n");
}
return(0);
}//end main
として大きなアクセスしてXを得ることができます 'char型[2];' – BLUEPIXY
あなたの入力は何ですか?そして、それはすべて1つの行にありますか?また、[mcve]を提供することをお勧めします。特に、これらのエラーを追跡するのは困難です。 –
'scanf()'ファンクションファミリのいずれかを呼び出すときは、操作が成功したことを保証するために返された値(パラメータ値ではない)を常にチェックしてください。投稿されたコードでは、戻り値は3でなければなりません。他の値はエラーを示します。 '%s'書式指定子を使用するときは、常に、最大長修飾子(入力バッファの長さよりも1つ少ない) – user3629249