我必須幫助我的一個朋友,但我已經忘記了一點C.:\該代碼有什麼問題?必須有一些指針錯誤。它給了我一個訪問違反閱讀記憶。可能是什麼問題呢?主要任務是:2個無限數組,並且必須計算一個數組。指針錯誤?訪問違反內存讀取
編輯版本:閱讀是好的,但可以通過literaly罰款。正如我記得我不應該返回一個指針,我可以返回一個計數器來計算附加到A和B數組有多少個數字?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double *bekerdezo1(double *a){
char line[64];
double value = 0;
int n = 0;
while ((fgets(line, sizeof line, stdin) != NULL) && (line[0] != '\n')){
if (sscanf(line, "%lf", &value) == 1){
a =(double*)malloc(sizeof(*a) *(n+1));
a[n] = value;
printf("%lf",a[n]);
n = n++;
}
else {
break;
}
}
return a;
}
double *bekerdezo2(double *b){
double value = 0;
char line[64];
int n = 0;
while ((fgets(line, sizeof line, stdin) != NULL) && (line[0] != '\n')){
if (sscanf(line, "%lf", &value) == 1){
b = (double*)malloc(sizeof(*b) *(n+1));
b[n] = value;
printf("%lf",b[n]);
n = n++;
} else {
break;
}
}
return b;
}
int main(void)
{
double reszq = 0,vegosszeg=0, tarolo = 0;
int i = 0;
size_t *n = 0;
double *a=NULL, *b = NULL;
bekerdezo1(a);
bekerdezo2(b);
for(i=0;i<100; i++)
{
reszq = 0;
tarolo = (a[i])*(b[i]);
reszq = tarolo/a[i];
vegosszeg = vegosszeg + reszq;
}
printf("vegosszeg=", vegosszeg);
return 0;
}
哎呀!沒有看到@pzaenger – Cherubim