Чтение файла данных C в F90 - PullRequest
4 голосов
/ 29 июня 2010

Я не специалист по программированию, но имею некоторый опыт. Больше недели я пытаюсь прочитать файл данных из C в программу на Фортране. Программа на C сохраняет матрицу в файле данных формата bin следующим образом:

FILE * amatFile;
amatFile = fopen("A.dat","wb");
for(krowa=0;krowa<N2;krowa++){ 
    fwrite(amat[krowa], sizeof(float), S2, amatFile); 
    }
fclose(amatFile);

и мой раздел чтения в F90:

open(unit=1,file='AMAT.dat',form='unformatted')
    DO i = 1,M
            Do j = 1,N
        READ(unit=1) AMAT(i,j)
        A(i,j) = AMAT(i,j)
        End do
    End Do
close(1)

Я очень признателен, если вы поможете мне решить проблему.

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Основываясь на довольно подробном изложении Fortran IO , я думаю, что вы неправильно поняли «неотформатированный».Неформатированный означает не двоичный файл, это просто текст с разделителями.Ваша программа на C наверняка не пишет разделители.Самое простое решение, если вы можете изменить код C, - это использовать fprintf вместо fwrite и настроить формат в соответствии с ожиданиями Fortran IO.Если вы не можете, то я рекомендую написать другую программу на C, чтобы прочитать вывод существующей и записать некоторые данные, совместимые с Фортраном.

1 голос
/ 29 июня 2010

Если у вас есть возможность, рассмотрите возможность использования вместо этого netcdf или hdf5.

fortran io - главная проблемаhttp://local.wasp.uwa.edu.au/~pbourke/dataformats/fortran/

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

...