| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1155 人关注过本帖
标题:[讨论]关于从文件读入数据的问题!
取消只看楼主 加入收藏
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
 问题点数:0 回复次数:7 
[讨论]关于从文件读入数据的问题!

6TQ82mX5.txt (108 Bytes) [讨论]关于从文件读入数据的问题!



两个附件一个是原程序文件,一个是输入文件。我把原程序文件改成 了txt文件。我学习C语言也不久,想请教下高手,谢谢。(其实就一般的数字排序程序就可以了的,不过我只是随便拿了个程序哈^_^.........)
我的问题就是当从文件输入200个数据,然后将它的后三位进行排序(这个不是重点,没啥关系),主要是如果我只输入20个数据,并且我是升序排列,(if(xx[i]%1000>xx[j]%1000 )最后要球输出10个数据,问题就来了,结果全部都是0,我想程序一定以为我输入的20个数据以后的全部按0计,如果我把它改成降序的话,(if(xx[i]%1000<xx[j]%1000) 结果又能正确的显示出来。我想问下用什么方法能使读入数据时不读我文件中没有的,只读真实输入的。(不要改200个为自己想输入的个数)。我做过以前的字符相同输入问题可以通过一个if语句:if(xx[i]!='\0') ........//xx[]是字符串数组,这样就可以了。但是这个int型的数据用这个好像就不行了。那应该用什么方法来解决呢?还是把代码贴上吧。


#include <stdio.h>
#include <string.h>
#include <conio.h>
int xx[200],b[10];
int maxline=0;
void jsSort()
{int i,j,t;
for(i=0;i<199;i++)
{
for(j=i+1;j<200;j++)
{ if(xx[i]!='\0')
if(xx[i]%1000>xx[j]%1000 ||(xx[i]%1000==xx[j]%1000)&&(xx[i]<xx[j]))
{t=xx[i];xx[i]=xx[j];xx[j]=t;}}
}
for(i=0;i<10;i++) b[i]=xx[i];

}

void main()

{

readDat();

jsSort();

writeDat();
system("pause");
}

readDat()

{

FILE *in;

int i;

in=fopen("in.txt","r");
for(i=0;i<200;i++)
{
fscanf(in,"%d",&xx[i]);}

fclose(in);
}

writeDat()

{

FILE *out;

int i;
out=fopen("out.dat","w");
for(i=0;i<10;i++){
printf(" %d ",b[i]);
fprintf(out,"%d\n",b[i]);
}

fclose(out);

}



rHzYbsfm.txt (1.35 KB) [讨论]关于从文件读入数据的问题!

搜索更多相关主题的帖子: 数据 文件 结果 
2006-07-31 16:45
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 
顶 一下

2006-08-01 16:10
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 
先谢谢楼上的哈,不过按你这个我去调试了下,不行啊,程序什么也不能输出也不能显示,当然调试没错。再看下怎么改啊!

2006-08-02 15:37
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 
以下是引用nuciewth在2006-8-2 15:50:10的发言:
少了&,不好意思。
while(EOF!=(fscanf("%d",&xx[i]))&&i<200)
{
i++;
}

应该是fscanf。不过这个程序我也试了下,不行的。
其实我就是想实现,从文件读入未知个数的数,然后计算输入的数据有多少个,将这些数再进行排序。
我开始用for循环200下读入数据结果没读入的数程序就按0计了,以致于后面按升序排的时候全是0,就是想找个方法使读入的数能真正成为数组的数,而其它就不读入。


2006-08-02 16:37
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 
以下是引用nuciewth在2006-8-2 15:50:10的发言:
少了&,不好意思。
while(EOF!=(scanf("%d",&xx[i]))&&i<200)
{
i++;
}

按这个也什么不能显示


2006-08-03 16:33
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 

两个附件就是原程序和 in.txt
原程序也贴出来了的嘛


2006-08-04 21:15
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 

嗯,你这个程序怎么看都是对的。但是的确程序出来的结果不对啊,真晕!我上传有原程序,帮着调下嘛,谢谢了


2006-08-04 23:07
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 
太感谢了哈,让你费了这么多心。我调试了下,程序可以正常的运行。
然后我又简化 了下,可以不用参数就可以了,将i赋给length了,其它程序就跟以前一样。还有你那个在输出b的时候i<length真是细心啊,如果只有少于10个数的话,没这个就又有问题了,呵呵。
谢谢谢谢

2006-08-06 22:12
快速回复:[讨论]关于从文件读入数据的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033602 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved