Я пытаюсь читать в N строк из двух столбцов float. Ниже приведен код, к которому я пришел, к сожалению, результат не тот, который я ожидал. Я считаю, что проблема может быть связана с плохим использованием указателя. Вход и вывод следуют за кодом.Видимая путаница с указателями, массивами и stdin
int main (void){
int i = 0;
int initSize =10;
double *xptr = (double *)calloc(initSize, sizeof(double));
double *yptr = (double *)calloc(initSize, sizeof(double));
while((scanf(" %lf %lf", &xptr[i], &yptr[i])) != -1){
i++;
if(i == initSize){
initSize *=2;
double *xtemp = xptr;
double *ytemp = yptr;
xptr = (double *)calloc(initSize, sizeof(double));
yptr = (double *)calloc(initSize, sizeof(double));
memcpy(yptr, ytemp,sizeof(double));
memcpy(xptr, xtemp,sizeof(double));
}
printf("x = %lf y = %lf \n", xptr[i] , yptr[i]);
}
}
Вход:
-150.5 127
-98.76453 0.901
100.1 140.34
128 59.08765
0.0039 -.000256
3.5 1.1
1.54 1000.987
выход:
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
x = 0.000000 y = 0.000000
Просто изменить 'Е ("х =% Lf у =% Lf \ N", xptr [I], yptr [I]);' в 'Е (" х =% Л.Ф. у =% Л.Ф. \ n ", xptr [i-1], yptr [i-1]);' –
О, и вместо этого используйте 'realloc()'. –