我正在尝试创建一个为数组创建随机数的函数。 这是我的代码。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define ROW 22
#define COL 80
void display(int life[ROW][COL]){
for(int i = 0; i<ROW; i++){
for(int j=0; j<COL; j++){
printf("%d",life[i][j]);
}
printf("\n");
}
}
void initialize_board(int life[ROW][COL]){
for(int i = 0; i< ROW;i++){
for(int j = 0; j<COL ; j++){
life[ROW][COL] = rand()%2;
}
}
}
int main() {
srand(getpid());
printf("PID: %d\n",getpid());
int life[22][80] = {0};
initialize_board(life);
display(life);
return 0;
}
但是我得到的输出是0而不是随机分配给0或1。
答案 0 :(得分:5)
而不是
life[ROW][COL] = rand()%2;
使用
life[i][j] = rand()%2;
在那个循环中。
就目前而言,您将所有随机值写入到阵列末尾后面的相同(无效)内存地址。
答案 1 :(得分:0)
[ROW][COL
]是最常见的,所以你总是在同一个(无效的,如Wintermute提到的)单元格中写作。所以你必须使用变量i
和j
亲切的问候