一个关于C语言文件输入输出的程序问题 高分悬赏

我的问题是要从TXT文件中读入两列数据,(A)(B)5.50.36.50.142.30.1330.2240.0940.114.30.126.80.08100.195.50... 我的问题是 要从TXT文件中读入两列数据, (A) (B) 5.5 0.3 6.5 0.14 2.3 0.13 3 0.22 4 0.09 4 0.11 4.3 0.12 6.8 0.08 10 0.19 5.5 0.16 13.4 0.13 15.8 0.17 要求是读入这两列数据,经过程序处理,比如:Z=A*X+B*Y 得到处理后的数据放在一个数组中,通过输出文件输出。 我的程序如下: #include "stdio.h" #include<math.h> void main() {FILE *in; FILE *out; float a[3000],b[3000],c[3000]; float p[3000]; char infile[20],outfile[20]; int i=0,t=0,x=0; printf("enter the infile name:\n"); scanf("%s",infile); printf("enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"rb"))!=NULL)/*打开源文件,读取数据*/ { while(!feof(in))/*检查是否到达文件结尾*/ { fscanf(in,"%f,%f",&p[x++],&c[t++]);/*将in文件中的实数逐个读入到p数组中*/ } fclose(in);/*关闭源文件*/ for(i=0;i<3000;i++) printf("%f,%f\n",p[i],c[i]); double a=1.5679,m=1.54543,b=1.08490,n=1.48491,Rw=0.034; for (i=0;i<3000;i++) p[i]=pow((a*b*Rw)/(p[i]*pow(c[i],m)),1/n); out=fopen(outfile,"w"); /*处理完成,开始输出到outfile文件*/ for (i=0; i<3000; i++) fprintf(out,"%f\n",p[i]); fclose(out); } else printf("can not open infile\n"); } 运行结果显示读入的数据不对,都是-107374,0000,-107374,0000. 那输出就更不对了。 不知道程序哪里错了,请大家指点。 第2个问题,要是只从TXT文件输入一列数据,经过处理以后输出一列数据,通过TXT文件输出,这样程序又是什么样的。 一共两个问题,悬赏200分,谢谢大家拉 谢谢大家 展开
 我来答
抄珠汪元凯
2020-01-17 · TA获得超过3909个赞
知道大有可为答主
回答量:3153
采纳率:34%
帮助的人:197万
展开全部
第一个问题:
这程序有两个问题:
1.
读入的格式与TXT文件不符。你的TXT是用空格来分隔数字的,而程序却用逗号。
2.
读入的行数没有记录,导致p和c两个数组中,大量空元素也被输出。
程序可以这样改:
#include
"stdio.h"
#include<math.h>
void
main()
{
FILE
*in;
FILE
*out;
float
a[3000],b[3000],c[3000];
float
p[3000];
char
infile[20],outfile[20];
int
i=0,t=0,x=0;
printf("enter
the
infile
name:\n");
scanf("%s",infile);
printf("enter
the
outfile
name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"rb"))!=NULL)/*打开源文件,读取数据*/
{
int
rows
=
0;
while(!feof(in))/*检查是否到达文件结尾*/
{
fscanf(in,"%f
%f\n",&p[x++],&c[t++]);/*将in文件中的实数逐个读入到p数组中*/
rows
++;
}
fclose(in);/*关闭源文件*/
for(i=0;i<rows;i++)
printf("%f,%f\n",p[i],c[i]);
double
a=1.5679,m=1.54543,b=1.08490,n=1.48491,Rw=0.034;
for
(i=0;i<rows;i++)
p[i]=pow((double)(a*b*Rw)/(p[i]*pow((double)c[i],(double)m)),1/n);
out=fopen(outfile,"w");
/*处理完成,开始输出到outfile文件*/
for
(i=0;
i<rows;
i++)
fprintf(out,"%f\n",p[i]);
fclose(out);
}
else
printf("can
not
open
infile\n");
}
第二个问题:
如果只想要一列,不把东西写入数组c就行:
//
两个%f,但是只保存第一个,第二个遗弃
double
no_use;
fscanf(in,"%f
%f\n",&p[x++],
&no_use);
输出时候:
fprintf(out,"%f\n",p[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式