error C2664: 'fprintf' : cannot convert parameter 2 from 'double' to 'const char *'

#include<iostream>//引用头文件的说明#include<stdio.h>#include<math.h>usingnamespacestd;voidma... #include <iostream> //引用头文件的说明
#include <stdio.h>
#include <math.h>
using namespace std;

void main()
{
double gs,gx,ws,wx,f[20];
int i,a,b;
int n;
FILE *p;
for(n=0;n<=19;n++)
{
cout<<"(请输入第 " <<n<<" 个数)"<<endl;
cin>>f[n];
}
for(a=1;a<=20;a++)
{
cout<<"a="<<a<<endl;
for(b=1;b<=20;b++)
{
cout<<"b="<<b<<endl;
ws=0;
wx=0;
for(n=0;n<=11;n++)
{
gs = a*(-0.5) * f[n] * (cos(6.2 * (n + 1 - b) / a) * exp(-(((n + 1 - b) / a)*2) /2));
gx = a*(-0.5)* f[n] * (-sin(6.2 * (n + 1 - b) / a) * exp(-(((n + 1 - b) / a)*2)/ 2));
ws = ws + gs;
wx = wx + gx;

}
cout<< "ws="<< ws<< "wx="<< wx<<endl;
FILE *p;
p=fopen("outing1.txt","w");
fprintf(p,ws);
fclose(p);
p=fopen("outing2.txt","w");
fprintf(p,wx);
fclose(p);

}
}
}

求高手帮忙把代码修改一下啊~重谢啊~
展开
 我来答
百度网友f36edb3
2011-03-06 · 超过14用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:17.3万
展开全部
fprintf不是这样使用的
int fprintf( FILE *stream, const char *format, ... );
fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

因此改成 fprintf(p,"%lf", ws);
fprintf(p,"%lf",wx); 就OK了。
追问
我按照你说的改过了,为什么最后导出的txt文本中只有一个数?我希望能把所有算出来的ws和wx的值都导入到txt文本中啊?应该怎样修改代码啊?谢谢~
追答
文件操作,先打开文件,待所有数据写入之后即for循环执行过程,再关闭文件。就可以将你所要的所有数值写入文件。 大概给你改了下,你在仔细看看是不是你想要的。

#include //引用头文件的说明
#include
#include
using namespace std;

void main()
{
double gs,gx,ws,wx,f[20];
int i,a,b;
int n;
FILE *p;
FILE *p1;
p=fopen("outing1.txt","w");
p1=fopen("outing2.txt","w");
for(n=0;n>f[n];
}
for(a=1;a<=20;a++)
{
cout<<"a="<<a<<endl;
for(b=1;b<=20;b++)
{
cout<<"b="<<b<<endl;
ws=0;
wx=0;
for(n=0;n<=11;n++)
{
gs = a*(-0.5) * f[n] * (cos(6.2 * (n + 1 - b) / a) * exp(-(((n + 1 - b) / a)*2) /2));
gx = a*(-0.5)* f[n] * (-sin(6.2 * (n + 1 - b) / a) * exp(-(((n + 1 - b) / a)*2)/ 2));
ws = ws + gs;
wx = wx + gx;

}
cout<< "ws="<< ws<< "wx="<< wx<<endl;
//FILE *p;
//p=fopen("outing1.txt","w");
fprintf(p,"%lf\n",ws);

//p=fopen("outing2.txt","w");
fprintf(p1,"%lf\n",wx);
//fclose(p);

}
}
fclose(p);
fclose(p1);
}
zengshengwen
2011-03-06 · 超过11用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:19.1万
展开全部
fprintf(p,ws);

改成fprintf(p,"%.2f", ws);

好好看看fprintf的定义 int fprintf ( FILE * stream, const char * format, ... );
format参数用于格式化输出各种类型的数据,用来控制要输出数据的格式,指定输出类型,
此外还要注意转义。

常用类型如下:
f表示输出浮点,d表示输出整数,等等自己看书。。。
如:fprintf( fp, "%3d 个土豆\n", 6); // 会输出“6 个土豆”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式