我正在编写一个需要将数字扫描到数组中的程序,我知道我的数组中的项目数将是5的倍数。我不能使用realloc函数,只能使用malloc,但我的程序搞乱了第6项,而10项后只是崩溃了。你能帮我找到我的错误吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
#define K 5
int main(){
int counter=0;
int enteredNum;
int *p=malloc(K*sizeof(int));
int *pmore=NULL;
printf("Please enter the series : \n");
scanf("%d",&enteredNum);
while(enteredNum!=0){
p[counter]=enteredNum;
if(counter%K==0&&counter!=0){
pmore=malloc(((counter)+K)*sizeof(int));
for(int i=0;i<counter;i++){
pmore[i]=p[i];
//for
free(p);
p=pmore;
pmore=NULL;
}//if
counter++;
scanf("%d",&enteredNum);
}
for(int i=0;i<counter;i++)
printf("%d\t",p[i]);
}
答案 0 :(得分:2)
在放大p[counter]
之前设置p
。因此,当K
为5时,counter%K
在counter
为5之前不会为零,但到那时为时已晚,您已经存储了六个p
(0,1,2,3,4和5)中的元素,只有足够的空间容纳5。