Как правильно прочитать массив двойников из файла? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь прочитать массив из файла и затем присвоить эти значения другому массиву. Я получаю много нулей и действительно большие числа.

Я пробовал разные спецификаторы, но они все те же. когда нет присваивания и печатается только один массив, такой проблемы нет

int n;                   
FILE * fo; 
fo = fopen("f1.txt","r");
double complex mas[8];
double complex y[8];
int N = 0;
while (!feof(fo)) {
    fscanf(fo, "%lf", &mas[N]);
    printf("%lf  ", mas[N]);
    N++;
    printf("%d ", N);
}
fclose(fo);
printf("\n      N=%d\n", N);
for(n=0; n<N; n++)               
{
    y[n] = mas[n];
    printf("%f  %f\n", y[n], mas[n]);
}

похоже, что значения присваиваются, но 1-й массив не может быть напечатан enter image description here

1 Ответ

2 голосов
/ 04 июня 2019

Невозможно прочитать комплексное число напрямую

// read a double (%lf) into a complex is wrong
fscanf(fo, "%lf", &mas[N]);

Вам необходимо прочитать каждую часть отдельно (при условии, что содержимое файла имеет формат "3.14159-2.71828i"), возможно, с

// read a complex parts
double r, c;
if (fscanf(fo, "%lf%lfi", &r, &c) != 2) /* error */;
// join the parts
mas[N] = r + c*I;
...