このコードはn <に適していますが、n = 40ではアクセス違反エラーが発生します: このコードはXとOをランダムに埋めます。2次元配列をランダムに塗りつぶします
int i=0,j=0;
int x=0,y=0;
int n=40;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
arr[i][j]='O';
}
srand(clock());
for(i=0;i<n*n;i++)
{
x = rand()%n;
y = rand()%n;
if(arr[x][y] == 'O') arr[x][y]='X';
}
宣言:あなたができる
arr = (char**)malloc(n);
for(i=0;i<n;i++)
arr[i] = (char*)malloc(n);
最初のループで「X」または「O」? – CanSpice
あなたの 'arr'宣言も見ることができますか? – Drahakar
男私は2D配列mallocが嫌いです。私はそれを正しく得られない。私の推測では、上記のmallocを強制してメモリを連続しておくと、ランダムに失敗することはありません。 –