dongtian99 发表于 2017-3-7 11:35:33

请教Fortran处理返回值为空的问题

您好,我用Fortran调用了C的一个求解器,返回值r是整数型,求解成功返回“0”,求解失败返回“空”。我想在Fortran中把求解失败返回“空”修改成返回“1”,结果试了半天,没成功。程序较长,后面进行判断的语句类似是这样:
r=function(a,b,c);
open (11,file='r.txt',status='replace',action='write')
if (r==0) then
   write(11,*) r;
else
write(11,*) 1;
end if]当计算成功时r.txt的内容为“0”,当计算失败时r.txt是空的,没有写入1。请问,能帮忙解答下吗,在返回值为整数型的情况下,怎样把求解失败“空”变为“1”?



li913 发表于 2017-3-7 14:37:35

求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1
r=function(a,b,c)

dongtian99 发表于 2017-3-7 14:46:53

li913 发表于 2017-3-7 14:37
求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1


您好,如果在前面加上r=-1,
计算成功返回:
-1
0
计算失败返回
-1
这样的话,成功时text里有2个数,失败有1个数。还是不好区分呀

pasuka 发表于 2017-3-7 15:13:19

判断文件是否为空呗
http://www.lahey.com/docs/lfpro77help/gfortran/IS_005fIOSTAT_005fEOR.html#IS_005fIOSTAT_005fEOR
PROGRAM iostat
            IMPLICIT NONE
            INTEGER :: stat, i(50)
            OPEN(88, FILE='test.dat', FORM='UNFORMATTED')
            READ(88, IOSTAT=stat) i
            IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'
          END PROGRAM

dongtian99 发表于 2017-3-7 15:42:31

pasuka 发表于 2017-3-7 15:13
判断文件是否为空呗
http://www.lahey.com/docs/lfpro77help/gfortran/IS_005fIOSTAT_005fEOR.html#IS_005f ...

谢谢您。只是不知道为啥 调用函数后只要是计算失败,程序就奔溃了,后面的操作就不执行了。。

vvt 发表于 2017-3-7 16:37:06

Inquire (file='r.txt',size=i)
if ( i == 0 ) 空
页: [1]
查看完整版本: 请教Fortran处理返回值为空的问题