Fortran Coder

查看: 13979|回复: 5

[输入输出] 请教Fortran处理返回值为空的问题

[复制链接]

24

帖子

7

主题

0

精华

熟手

F 币
132 元
贡献
80 点
发表于 2017-3-7 11:35:33 | 显示全部楼层 |阅读模式
您好,我用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”?



790

帖子

2

主题

0

精华

大宗师

F 币
3765 元
贡献
2255 点
发表于 2017-3-7 14:37:35 | 显示全部楼层
求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1
r=function(a,b,c)

24

帖子

7

主题

0

精华

熟手

F 币
132 元
贡献
80 点
 楼主| 发表于 2017-3-7 14:46:53 | 显示全部楼层
li913 发表于 2017-3-7 14:37
求解失败,能正常返回吗?看起来可能是求解失败就崩掉了。
试试在前面加一句
r=-1

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

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

发表于 2017-3-7 15:13:19 | 显示全部楼层
判断文件是否为空呗
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

24

帖子

7

主题

0

精华

熟手

F 币
132 元
贡献
80 点
 楼主| 发表于 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 ...

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

953

帖子

0

主题

0

精华

大师

F 币
180 元
贡献
73 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
发表于 2017-3-7 16:37:06 | 显示全部楼层
Inquire (file='r.txt',size=i)
if ( i == 0 ) 空
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-3-28 17:08

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表