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