Как читать таблицы из файла .dat в C - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно прочитать таблицу из файла .dat (ASCII), который содержит 3 столбца с количеством строк, равным первой строке в файле .dat, а затем сохранить каждый столбец в отдельном массиве. Мне посоветовали использовать fscanf, но я не знаю, как!

//this is the .dat file (ASCII format)
inname.dat 
//n -this is the first line in the .dat file and it represents number of rows in the table
2000 
//these are the different columns, each of which should be stored in
//a separate  array x[n],y[n],y[n]
-0.9210340500E+01  -0.1642608881E+01   0.1000000000E+01
-0.9204236984E+01  -0.1645367146E+01   0.1000000000E+01
-0.9198134422E+01  -0.1648124933E+01   0.1000000000E+01
-0.9192030907E+01  -0.1650882006E+01   0.1000000000E+01
-0.9185928345E+01  -0.1653640866E+01   0.1000000000E+01
-0.9179824829E+01  -0.1656393051E+01   0.1000000000E+01
-0.9173722267E+01  -0.1659148812E+01   0.1000000000E+01
-0.9167618752E+01  -0.1661900759E+01   0.1000000000E+01
-0.9161516190E+01  -0.1664654970E+01   0.1000000000E+01
-0.9155412674E+01  -0.1667405009E+01   0.1000000000E+01
-0.9149310112E+01  -0.1670155764E+01   0.1000000000E+01
-0.9143207550E+01  -0.1672905326E+01   0.1000000000E+01
-0.9137104034E+01  -0.1675654054E+01   0.1000000000E+01

1 Ответ

0 голосов
/ 03 апреля 2019

Если вы советуете использовать fscanf, вы можете открыть файл, а затем использовать цикл, такой как

double varA, varB, varC;
while(fscanf(fil, "%lf%lf%lf", &varA, &varB, &varC) == 3) {
    // ...
}

Другим предпочтительным способом для некоторых является

char str[100];
double varA, varB, varC;
while(fgets(str, sizeof str, fil) != NULL) {
    if (sscanf(str, "%lf%lf%lf", &varA, &varB, &varC) != 3) {
        break;
    }
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...