Fortran Coder

标题: 请教Fortran处理返回值为空的问题 [打印本页]

作者: dongtian99    时间: 2017-3-7 11:35
标题: 请教Fortran处理返回值为空的问题
您好,我用Fortran调用了C的一个求解器,返回值r是整数型,求解成功返回“0”,求解失败返回“空”。我想在Fortran中把求解失败返回“空”修改成返回“1”,结果试了半天,没成功。程序较长,后面进行判断的语句类似是这样:
[Fortran] 纯文本查看 复制代码
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
求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1
r=function(a,b,c)
作者: dongtian99    时间: 2017-3-7 14:46
li913 发表于 2017-3-7 14:37
求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1

您好,如果在前面加上r=-1,
计算成功返回:
-1
0
计算失败返回
-1
这样的话,成功时text里有2个数,失败有1个数。还是不好区分呀
作者: pasuka    时间: 2017-3-7 15:13
判断文件是否为空呗
http://www.lahey.com/docs/lfpro7 ... _005fIOSTAT_005fEOR
[Fortran] 纯文本查看 复制代码
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
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
Inquire (file='r.txt',size=i)
if ( i == 0 ) 空




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2