两个函数交替在同一个txt写入数据,怎么做?
我想当m=1时,经过accumulation、 backtrack函数载入m=1时的参数得到放在u[ii]的数据,然后写入u.txt。然后再在m=2时,经过accumulation、 backtrack函数载入m=2时的参数得到放在u[ii]的数据,然后在前者内容之后继续写入u.txt。我的程序结果:写在u.txt的m=1时的数据正常,但是m=2时写入的数据都是0。
网上看有说fseek定位文件末尾,有说fflush函数,那位大神能给出明确指点?使得m=2时的数据能够正常的接着写在m=1数据之后。
for(m=1;m<=2;m++) //分2段变化扫描范围,求时差
{
if(m==1)
{
for (l=0;l<(nl*m);l++) //nl=20,40,60,80,100
{
for( i=0 ; i<nipssec ; i++)
{
is=i+l;
//if(is>=nips) is=nips;
e31[tr][l][i]=(datp[i]-dats[is])*(datp[i]-dats[is]); //ealloc3float(最低级,中级,最低级),但是在实际应用的数组e3[最高级][中级][最低级],和开辟时ealloc3float刚好相反。
dvh1[l][i]=e31[tr][l][i];
}
}
accumulation(dacc1,dvh1,nl,nipssec,bv); /*dacc[nl][nip],dvh[nl][nip],函数形参的输出为dacc[nl][nip]放结果累积误差*/
backtrack(dacc1,dvh1,u,nl,nipssec,bv); /*backtrack的输出是各道的u[nip]*/
for(ii=0 ;ii<nipssec ;ii++)
{
fprintf(fp,"%f\n",u[ii]*0.001); //在速度比=2时,前500个采样点的时差都是0!!!直到前600个时,才会零星出现时差。
}
}
else if(m==2)
{
for (l=0;l<40;l++) //nl*2=40
{
for( i=(1250*(m-1)) ; i<(1250*m) ; i++) //1250-2500
{
is=i+l;
e32[tr][l][i]=(datp[i]-dats[is])*(datp[i]-dats[is]); //ealloc3float(最低级,中级,最低级),但是在实际应用的数组e3[最高级][中级][最低级],和开辟时ealloc3float刚好相反。
dvh2[l][i]=e32[tr][l][i];
}
}
accumulation(dacc2,dvh2,nl*m,nipssec,bv); /*dacc[nl][nip],dvh[nl][nip],函数形参的输出为dacc[nl][nip]放结果累积误差*/
backtrack(dacc2,dvh2,u,nl*m,nipssec,bv); /*backtrack的输出是各道的u[nip]*/
for(ii=0 ;ii<nipssec ;ii++)
{
fprintf(fp,"%f\n",u[ii]*0.001); //在速度比=2时,前500个采样点的时差都是0!!!直到前600个时,才会零星出现时差。
}
}
} //对应分2段的for循环的括号
fprintf(fp,"\n"); /*在不同道的时差输出之间加上一个换行*/