您的位置:程序门 -> c/c++ ->



折磨了小弟很久的一个小程序,请教高手


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


折磨了小弟很久的一个小程序,请教高手
发表于:2007-05-05 12:12:21 楼主
我想把一个文件的内容存到一个数组中,然后打印出来,这是我的一个算法中的一些小部分,但是为什么用 "%f "的格式,打印出来的就全部是零,而用 "%d "则可以打印出来,但是精度不够。我的文件里全部为一些数字。下面是小弟写的源程序:请高手帮忙了。
void   readtxt()
{
file   *in;
int   i;

if((in=fopen( "soil1.txt ", "r "))==null)
{
puts( "cant 't   open   the   file ");
exit(1);
}

for(i=0;i <max;i++)
{
fscanf(in, "%d\n ",&line[i]);
}

fclose(in);


for(i=0;i <max;i++)
{
printf( "%d\n ",line[i]);
}

}
发表于:2007-05-05 12:20:271楼 得分:0
问一些详细的情况,比如文件的格式是怎样的,可否给一段文件样本,还有line的类型?
发表于:2007-05-05 12:33:082楼 得分:0
我的文件里面全部是一些数字,我粘一段样本:
5544
3108
7476
4536
6552
18312
10332
9156
14364
9156
4200
9744
就是这样的格式,不好意思刚才line的类型忘写了,是double类型的。谢谢大家了!
发表于:2007-05-05 12:41:363楼 得分:0
我试了一下,把代码贴在下面:
#include   <stdio.h>
#include   <stdlib.h>
#define   max   10
void   readtxt()
{
        double   line[100];
        file   *in;
        int   i;

        if((in=fopen( "soil1.txt ", "r "))==null)
        {
                  puts( "cant 't   open   the   file ");
exit(1);
          }

          for(i=0;i <max;i++)
        {
fscanf(in, "%lf\n ",&line[i]);
          }

          fclose(in);


          for(i=0;i <max;i++)
          {
printf( "%lf\n ",line[i]);
          }

}

void   main()
{
          readtxt();
}

我试过了,可以通过。
问题出在这里:
如果line的类型是double,读入和输出时一定要用%lf
如果line的类型是float,读入和输出时一定要用%f
发表于:2007-05-05 12:46:444楼 得分:0
谢谢兄台了!小弟万分感谢
发表于:2007-05-05 12:49:035楼 得分:0
不客气
发表于:2007-05-05 12:50:466楼 得分:0
大哥说的果然没错,这下可以运行了!
发表于:2007-05-05 12:57:047楼 得分:0
像这一类的问题有一个经验,就是当看到数据的输出完全不是自己想要的结果是,首先检查一下输入输出部分匹配是否适当.


快速检索

最新资讯
热门点击