我有一个输入文本文件,其中包含一个整数记录,如下所示:
1它在Fortran代码中被读为:
read(iunit,'(i4)') int_var这对于Gfortran很好,但是用编译的相同代码需要一个4个字符宽(实际记录只有一个字符)并抛出一个错误。现在我知道格式指定了宽度,根据Fortran标准,这可能是正确的行为,也可能不是正确的行为,但我的问题是-有一个编译器选项可以使它在这方面像Gfortran那样运行吗?。
我使用的这个第三方代码有很多(数百或数千)这样的读语句,而且输入数据有很多“错误”宽度的记录,所以修改代码或输入数据都需要付出很大的努力。
发布于 2012-11-16 20:23:15
我不认为这与blank有关。此read不应导致错误,除非您用pad="no"打开文件iunit。默认情况下是pad="yes",如果输入记录太短,就会用空格填充输入记录。
您确定使用了正确的输入文件,并有正确的行尾吗?来自Windows的文本文件可能会出现问题,而在Unix中,可以在输入记录中读取CR。在本例中,使用unix2dos实用程序可能会有所帮助。您可以尝试使用character(4)编辑描述符读取a4字符串来测试这一点。
发布于 2012-11-16 19:14:08
支持开放关键字blank="null“吗?我认为这将改变对您想要的行为的读取,并将对代码的修改最小化。blank="null“与blank=”0“在gfortran4.7中似乎没有什么区别。
https://stackoverflow.com/questions/13421949
复制相似问题