在F90中读取C数据文件
我不是编程专家,但有一些经验。我花了一个多星期的时间试图将数据文件从C读入Fortran程序。C程序将矩阵保存在bin格式的数据文件中,如下所示:在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); 如果你能帮助我解决这个问
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)