Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在F90中读取C数据文件_C_Fortran90 - Fatal编程技术网

在F90中读取C数据文件

在F90中读取C数据文件,c,fortran90,C,Fortran90,我不是编程专家,但有一些经验。我花了一个多星期的时间试图将数据文件从C读入Fortran程序。C程序将矩阵保存在bin格式的数据文件中,如下所示: FILE * amatFile; amatFile = fopen("A.dat","wb"); for(krowa=0;krowa<N2;krowa++){ fwrite(amat[krowa], sizeof(float), S2, amatFile); } fclose(amatFile); 如果你能帮助我解决这个问

我不是编程专家,但有一些经验。我花了一个多星期的时间试图将数据文件从C读入Fortran程序。C程序将矩阵保存在bin格式的数据文件中,如下所示:

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

如果你能帮助我解决这个问题,我真的很感激。

< P>如果你有选择,考虑使用NETCDF或HDF5代替。 fortran io是主要的痛苦。

但一定要检查你的输入。
您似乎正在将向量写入文件,但您似乎正在从另一个文件读取矩阵

基于一个,我认为您误解了“未格式化”。未格式化并不意味着二进制,它只是意味着分隔文本。你的C程序肯定不是在写定界符。如果可以更改C代码,最简单的解决方案是使用fprintf而不是fwrite,并将格式安排为符合Fortran IO的预期。如果不能,那么我建议编写另一个C程序来读取现有C程序的输出,并编写一些与fortran兼容的数据。

那么问题出在哪里?这些数字是以无法理解的格式读取的吗?你看不懂数字吗?对不起,我不能在这台机器上运行Fortran。一些数据怎么样?十六进制转储、C程序输出、F90程序输出的内容……fwrite将写入二进制、IEEE浮点数。是什么让你认为fortran有阅读它们的能力?
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)