如何将C程序输出结果保存在一个文件里?

liuwen20030412 2004-04-03 10:46:02
有这么一个程序我要将它的输出结果保存在E盘的filename.c文件中,下面的程序对吗?#include<stdio.h>
#include<math.h>
main()
{
FILE *fp;
double xa=0.0,xb=2.0,q=6.5,qq=0.0000028,d=0.000000002067,l=0.2,dti=0.0006,nn=61,d0=0.0007;

double s=0.0,h,x=xa,fa,fb,sum=0.0,kk,a0=0.0000012875,af=0.0000003848,aaa=0.000055064,de;

double f1[21],f2[21],ss[20],dh[20],u[20],k[20],qqq[20],z[10],aa[20],suma;

int i,j,n=20;

if((fp=fopen("e:\filename.c","w"))==NULL)
{printf("cannot open file\n");
exit(0);}

for(j=601;j<=700;j++)
{

x=xa;

q=j/100.0;

fa=1.0/(q*sqrt(2*3.1416))*exp(-(xa-1)*(xa-1)/(2*q*q));

fb=1.0/(q*sqrt(2*3.1416))*exp(-(xb-1)*(xb-1)/(2*q*q));

h=(xb-xa)/(2.0*n);

f1[0]=fa;

f2[0]=1.0/(q*sqrt(2*3.1416))*exp(-(x+h-1)*(x+h-1)/(2*q*q));

x=x+h;

s=0.0;

sum=0.0;

for(i=0;i<n;i++)

{

x=x+h;

f1[i+1]=1.0/(q*sqrt(2*3.1416))*exp(-(x-1)*(x-1)/(2*q*q));

x=x+h;

f2[i+1]=1.0/(q*sqrt(2*3.1416))*exp(-(x-1)*(x-1)/(2*q*q));
ss[i]=h/3.0*(f1[i]+f1[i+1]+4*f2[i]);
s=s+ss[i];
aa[i]=(xb-xa)/n*(i+1)*(a0-af)+af;
dh[i]=4*aa[i]/(3.1416*d0);
de=4*aaa/(3.1416*(0.01+nn*d0));
qqq[i]=qq*dh[i]*dh[i]*aa[i]/(aaa*de*de);
u[i]=qqq[i]/aa[i];
z[i]=u[i]*dti*dti/(d*l);
k[i]=1.62*pow(z[i],0.33)*d/dh[i];
sum=sum+ss[i]*qqq[i]*exp(-k[i]*aa[i]/qqq[i]);
}
suma=sum*nn;
ss[20]=h/3.0*(f1[19]+f1[20]+4*f2[19]);
s=s+ss[20];
kk=qq/aaa*log(qq/(sum*nn));
fprintf(fp,"q=%f,kk=%g,s=%g,suma=%g\n",q, kk,s,suma);
fclose(fp);
}
}

...全文
113 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkhuang 2004-04-05
  • 打赏
  • 举报
回复
dup or dup2
liuwen20030412 2004-04-05
  • 打赏
  • 举报
回复
都不行呀,各位老大!
jack_wq 2004-04-05
  • 打赏
  • 举报
回复
楼主fopen只有一次,fclose却是在循环里面!
jack_wq 2004-04-05
  • 打赏
  • 举报
回复
1. fp=fopen("E:\\filename.c","w");
2. 把fclose(fp);放到循环的外面,文件写完之后再关闭,其实在你第一次写文件之后就给关闭了!
that 2004-04-05
  • 打赏
  • 举报
回复
在vc中可以的,函数void main ()
及exit 改为return;就可以了
liuwen20030412 2004-04-05
  • 打赏
  • 举报
回复
我把大家说过的都试过了
但是还是不行呀
liuwen20030412 2004-04-04
  • 打赏
  • 举报
回复
但我改了楼上所说的还是不行呀!
tantao1982 2004-04-04
  • 打赏
  • 举报
回复
恩,是的。同意wentiboy
wentiboy 2004-04-04
  • 打赏
  • 举报
回复
如ShineBoy007(晓龙)所说的
应是:fp=fopen("e:\\filename.c","w"))
读取目录的时候,"\"会被看成转义字符,如果是"\name.c"就会被当作"\n"换行~~~~~~~
"\\"转换后才是"\",~
liuwen20030412 2004-04-04
  • 打赏
  • 举报
回复
大家帮我看看啊
liuwen20030412 2004-04-04
  • 打赏
  • 举报
回复
大家帮我看看啊
谢谢!
ShineBoy007 2004-04-03
  • 打赏
  • 举报
回复
fp=fopen("e:\filename.c","w"))

应是:fp=fopen("e:\\filename.c","w"))
redbad2 2004-04-03
  • 打赏
  • 举报
回复
同意楼上
scu_hurricane 2004-04-03
  • 打赏
  • 举报
回复
fp=fopen("e:\filename.c","w"))
fprintf(fp,"q=%f,kk=%g,s=%g,suma=%g\n",q, kk,s,suma);
应该没问题吧。
liuwen20030412 2004-04-03
  • 打赏
  • 举报
回复
谢谢大家给我解答啊
我在线等呀

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧