int main(int argc, char** argv)
{
printf("Enter the file name:\n");
char inputFileLoc[100], outFileLoc[100];
scanf("%s", inputFileLoc);
int * n = 0;
float rcoef[2];
FILE * inFile = fopen("D:\\test.txt", "r");
FILE * outFile = fopen(outFileLoc, "w");
if (inFile == NULL)
{
printf("File not found at %s", inputFileLoc);
}
else
{
printf("How many data points should we read in?");
scanf("%i", &n);
float *xdata = (float *)calloc(sizeof(float), *n);
float *ydata = (float *)calloc(sizeof(float), *n);
for (int i = 0; i < *n; i++)
{
fscanf(inFile, "%f%f", &xdata[i], &ydata[i]);
}
fregression(xdata, ydata, rcoef);
printf("Where would you like to save the file to?\n");
scanf("%s", outFileLoc);
fprintf(outFile, "The slope and intercept are %f and %f", rcoef[0], rcoef[1]);
free(xdata);
free(ydata);
}
fclose(inFile);
fclose(outFile);
return 0;
}
我在“float * xdata =(float *).....行中出错了,我不明白为什么?我错过了某种异常处理程序,因为这是我唯一能想到的的。
答案 0 :(得分:0)
这是不正确的:
int * n = 0;
应改为
int n = 0;
scanf
应该获取要写入的地址而不是指针的地址。即使您想使用指针,也应该分配内存,n
应该指向它。在这种情况下,您应该在转到&
时将n
放到scanf
,即scanf("%i", n);
应该没问题。
答案 1 :(得分:0)
将 int * n 更改为 int n ,因为scanf正在尝试写入未初始化的内存。
在calloc中也会进行更改,因为它试图从未正确定义的* n进行分配
当我尝试两次更改时,它工作正常。即使你在完全指定之后出现错误。