我必须帮助我的一个朋友,但我已经忘记了一点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