#include"stdio.h" main(){ FILE * new; FILE * out; int i=0,j; float ik[18]; clrscr(); if((new=fopen("data.data","r"))==NULL)exit(0); out=fopen("out.data","w"); for(j=0;j<18;j++){ fscanf(new,"%9.5f ",&ik[j]); printf("%f\n",ik[j]); fprintf(out,"%9.5f ",ik[j]); i++; if(i%9==0)fprintf(out,"\n"); } fclose(new); fclose(out); }
那位前辈指点一下,这段程序那里出错,为什么结果总是错误的,望不惜赐教,wanghengwu_2000@163.com
1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000
----------------解决方案--------------------------------------------------------
#include"stdio.h" <--一般情况下,使用系统的.h文件用#include <file.h>这样的方式, 这里的方式是用来使用自己写的.h文件的 main(){ FILE * new; FILE * out; int i=0,j; float ik[18]; clrscr(); if((new=fopen("data.data","r"))==NULL)exit(0); out=fopen("out.data","w"); for(j=0;j<18;j++){ fscanf(new,"%9.5f ",&ik[j]); <--这个地方不需要指定输入数据的长度,改为 fscanf(new,"%f",&ik[j]); printf("%f\n",ik[j]); fprintf(out,"%9.5f ",ik[j]); i++; if(i%9==0)fprintf(out,"\n"); } fclose(new); fclose(out); }
那位前辈指点一下,这段程序那里出错,为什么结果总是错误的,望不惜赐教,wanghengwu_2000@163.com
1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000
----------------解决方案--------------------------------------------------------
程序运行到if((new=fopen("data.data","r"))==NULL)exit(0);就断了
----------------解决方案--------------------------------------------------------
("data.data","
文件名不合法,看看dos文件名的规定
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000 这些就是data.data文件的内容,而程序在turboc2.0中运行的结果就是下面的数据
0.00000 0.00000 0.00000 0.00000 -NAN 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -NAN 2091277556253295790000000000000.00000
我在运行这个程序时还是正确的呢
#include"stdio.h"
main(){
FILE * new;
FILE * out;
int i=0,j;
int ik[18];
if((new=fopen("data1.data","r"))==NULL)exit(0);
out=fopen("intout.data","w");
for(j=0;j<18;j++){
fscanf(new,"%3d ",&ik[j]);
fprintf(out,"%2d ",ik[j]);
i++;
if(i%9==0)fprintf(out,"\n");
}
fclose(new);
fclose(out);
}
不知道他们的差别在那?难道就是整数和小数的差别吗?!!!!!
----------------解决方案--------------------------------------------------------
至于#include<stdio.h>我已经试过了,不行!!!
还有fscanf(new,"%f",&ik[j]);也试了,结果一样!!!!
郁闷啊
----------------解决方案--------------------------------------------------------
换个c的编译器, 我在gcc下编译是没有问题的.
不同的编译器在对scanf库函数的处理可能会有不同.
----------------解决方案--------------------------------------------------------
我的也是程序运行到if((new=fopen("data.data","r"))==NULL)exit(0);就断了!
----------------解决方案--------------------------------------------------------
前辈是不是,结果也正确啊?!
我是 说输出的是:
1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000
还有在 哪能找到 gnu c compiler呢?
----------------解决方案--------------------------------------------------------