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

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
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
for(i=0;i<200;i++)
{
fscanf(in,"%d",&xx[i]);}

=============>
i=0;
while(fscanf(in,"%d",&xx[i++]));
再把后面的200改成i(即读入的数的个数)来控制循环次数。


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

2006-08-02 15:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/*数据读入*/

#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endf
i=0;
while(EOF!=(scanf("%d",xx[i]))&&i<200)
{
i++;
}

倚天照海花无数,流水高山心自知。
2006-08-02 15:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
少了&,不好意思。
while(EOF!=(scanf("%d",&xx[i]))&&i<200)
{
i++;
}

倚天照海花无数,流水高山心自知。
2006-08-02 15:50
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
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用ChinaTang在2006-8-2 15:37:17的发言:
先谢谢楼上的哈,不过按你这个我去调试了下,不行啊,程序什么也不能输出也不能显示,当然调试没错。再看下怎么改啊!

您把改后的程序贴上来,我再看看。


对不礼貌的女生收钱......
2006-08-03 18:31
ChinaTang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-5
收藏
得分:0 

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


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



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

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