|
2016年第一帖,首先祝福各位大神不论是工作还是读书,都能在新的一年收获满满,开心顺遂!当然也要对去年近一年的时间各位大神对我的帮助表示感谢,有你们的帮助,真的让我这个初学者受益匪浅!
这个帖子是关于在fortran调用C里面的一个统计输出函数时的问题,具体见一下代码:
fortran的部分[Fortran] 纯文本查看 复制代码 1 | IF ( SFLAG % IRECRD .GE. 1000 ) THEN |
2 | CALL STATIS ( c_loc ( SFLAG ) ) |
4 | CALL FRMEM ( c_loc ( FLAG ) , c_loc ( SFLAG ) ) |
5 | WRITE ( * , * ) 'frmem has done!' |
7 | DELTM = DELTM + ( TMPTM - TMPTM 0 ) |
C的部分[C] 纯文本查看 复制代码 01 | void statis( struct ssflag *SFLAG) |
04 | void output( struct incrmnt *pst, FILE *out); |
06 | sprintf (str, "output\\statis%d.plt" , SFLAG->nstep); |
13 | void output( struct incrmnt *pst, FILE *out) |
18 | fprintf (out, "%10d%14.2f%10d%10d\n" ,i++,pst->y[0],pst->js,pst->gross); |
19 | output(pst->lchild,out); |
20 | output(pst->rchild,out); |
大神,现在的情况是fortran可以调用C的函数进行输出,但是输出的结果和设想的不一样。fortran里面第一句 IF(SFLAG%IRECRD.GE.1000) THEN 里面这个1000是一个限制数,只要SFLAG%IRECRD大于这个数字,就会进行节点输出统计,也就是 CALL STATIS(c_loc(SFLAG))函数,节点统计的结果会打印在output文件夹的statis文件中,这个文件是可以输出的,但是输出的结果不对,我希望得到的结果是限制数为多少,文件里面就有多少行内容,比如之前的程序当这个限制数为10000时候,不论输出多少个statis文件,每个文件里面都有一万行,
但是现在得到的输出结果是,每一个文件里面只出现一行,
,
请问这是什么原因导致的?是我的语句写错了吗?
|
|