所以我有一段C代码:
void main (void){
int i,n,r,*pt1;
printf("Enter array size:\n");
scanf("%d",&n);
srand(time(NULL));
char niz[n];
pt1=niz;
for (i=0;i<n;i++){
r=rand() % (15);
printf("%d\n",r);
if (r==0)
break;
niz[i]=r;
if (i==n){
pt1=(char*)realloc(niz,(sizeof(n)*2));
if (pt1==NULL)
printf("Jbg");
}
}
free(pt1);
return 0;
}
现在这里的重点是当计数器在循环中到达末尾时,将数组大小加倍。pt1 的代码可以吗?另外,我在 printf 的末尾遇到了分段错误,我不知道为什么。提前致谢!!:)
编辑:感谢大家的回答,这是我修改后的功能代码:
void dupla(int n){
int i,r;
srand(time(NULL));
char * niz=malloc(n);
for (i=0;i<n;i++){
r=rand() % (15);
printf("%d\n",r);
if (r==0)
break;
niz[i]=r;
if (i==n){
niz=(char*)realloc(niz,n*2);
}
}
if (niz==NULL)
printf("Jbg");
else
printf("It works\n");
printf("%d",sizeof(niz));
free(niz);
}
void main (void){
int n;
printf("Enter array size:\n");
scanf("%d",&n);
dupla(n);
return 0;
}