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 *)..... и я понятия не имею, почему? Я пропустил какой-либо обработчик исключений, потому что это единственное, что я могу придумать.
измените int * n на int n, когда scanf пытается записать в память, которая не инициализирована.
В calloc также внести изменения, поскольку он пытается назначить из * n, который не определен правильно
Он отлично работает, когда я пытался с двумя изменениями. даже если вы получите ошибки после этого, укажите полностью.
Это неверно:
int * n = 0;
следует изменить на
int n = 0;
scanf
должен получить адрес для записи, а не адрес указателя. Даже если вы хотите использовать указатель, тогда необходимо выделить память, и n
должен указать на это. В этом случае вы должны отбрасывать &
n
при переходе к scanf
то есть scanf("%i", n);
все должно быть в порядке.
std::cin >> n;
? Какую ошибку это дает?
n
былоint
, а неint*
.