当前位置: 代码迷 >> C语言 >> [原创]是前辈的就来帮个忙!!!!!!
  详细解决方案

[原创]是前辈的就来帮个忙!!!!!!

热度:225   发布时间:2005-05-18 17:48:00.0
[原创]是前辈的就来帮个忙!!!!!!

#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

搜索更多相关的解决方案: 前辈  

----------------解决方案--------------------------------------------------------
以下是引用sywr在2005-5-18 17:48:37的发言:

#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文件名的规定
----------------解决方案--------------------------------------------------------

以下是引用牛虻在2005-5-18 22:47:40的发言: 程序运行到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   这些就是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&lt;18;j++){
fscanf(new,"%3d ",&amp;ik[j]);
fprintf(out,"%2d ",ik[j]);
i++;
if(i%9==0)fprintf(out,"\n");
}
fclose(new);
fclose(out);
}
不知道他们的差别在那?难道就是整数和小数的差别吗?!!!!!
----------------解决方案--------------------------------------------------------
至于#include&lt;stdio.h&gt;我已经试过了,不行!!!
还有fscanf(new,"%f",&amp;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呢?
----------------解决方案--------------------------------------------------------
  相关解决方案