我需要使用指针将500到600之间的随机数存储到数组中,然后打印出这些数字。我得到一个分段错误...核心转储,我真的不明白这意味着什么。在printf语句(“%15d \ n”,aPtr [i])之后发生错误;
int main(){
int size;
int j, i;
int temp;
int sum = 0;
printf("Enter size of array");
scanf("%d", &size);
int array[size];
int *aPtr = malloc(sizeof(int) * size);
for (i = 0; i <= size; i++){
srand(time(NULL));
aPtr[i] = rand() % 500 + 100;
printf("%15d\n", aPtr[i]);
答案 0 :(得分:4)
i <= size;
应为i < size;
如果您有50个项目的数组,则有效索引为[0,49]。
答案 1 :(得分:1)
在进入循环之前,您需要致电srand
。
现在,您将获得一长串相同的数字,因为您每次都将随机数生成器重置为相同的种子(假设时间不变,这很可能)。此外,如果您想要500到600之间的数字,那么您的公式是错误的。试试这个片段:
srand(time(NULL));
for (i = 0; i < size; i++){
aPtr[i] = (rand() % 101) + 500;
printf("%d\n", aPtr[i]);
}
答案 2 :(得分:1)
你只需要调用srand(初始化随机数生成器)一次。将它移出for。如果你想要500到600之间的随机数,你需要在0到100之间生成它们(rand()%101),然后加上500.