我的程序有问题我不知道该怎么做:(
double spocitaj(FILE *fr,double **polsum, int *cena){
int r=0, i=0,k=0;
double n=0;
char c;
while((c=getc(fr))!=EOF){
if(c=='\n') r++;
if(r==4){
*cena=k++;
r=5;
}
if(r==6) r=0;
}
*polsum=(double *)calloc(k,sizeof(double));
r=1;
rewind(fr);
while((c=getc(fr))!=EOF){
if(c=='\n') r++;
if(r==4) {
ungetc(c,fr);
fscanf(fr,"%lf", &n);
*polsum[i]=n;
i++;
}
if(r==6) r=1;
}
for(i=0;i<*cena;i++)
printf("%.2lf\n", *polsum[i]);
return 0;
}
你能帮帮我吗? 这是一条消息: Projekt中0x012947F8
的未处理异常1.exe:0xC0000005
:
访问违规写入位置
0xCCCCCCCC
。
答案 0 :(得分:5)
*polsum[i]=n;
应为(*polsum)[i] = n;
。
*polsum[i]
是*(polsum[i])
,它将polsum
视为一个数组,但您可能希望它是一个单指针,指向一个double *
的指针。
将此更改为(*polsum)[i])
说“查找double *
指向的polsum
。double *
指向有double
位的地方i
获取{{1}} th 之一。“