| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:[求助]将一个文件数据进行排序后,将排序后的数据存入另一个文件中.....
只看楼主 加入收藏
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
 问题点数:0 回复次数:9 
[求助]将一个文件数据进行排序后,将排序后的数据存入另一个文件中.....

以下是自己写的代码,没有运行成功.....
按照第一列的数字(item)进行升序排列

#include "stdio.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#define SIZE 33
struct store
{
int item;
int stock;
float price;
char name;
}store[SIZE];

void main()
{
int i,j;
struct store sto[SIZE],temp;
FILE *fp,*fo;

fp=fopen("G:\OUT1.TXT","r+");
fo=fopen("G:\temporary.txt","w+");
if(fp==NULL)
{
printf("\ncannot open the file!\n");
return;
}
else if(fo==NULL)
{
printf("\ncannot open the file!\n");
return;
}
else
{
for(i=0;i<SIZE;i++)
if(fread(&sto[i],sizeof(struct store),1,fp)!=1)
{
printf("read error\n");
}

for(i=0;i<SIZE;i++) /* 选择法排序 */
{


for(j=i+1;j<SIZE;j++)
if(sto[j].item>sto[i].item)

{
temp=sto[i];
sto[i]=sto[j];
sto[j]=temp;
}
}

fwrite(&sto[i],sizeof(struct store),1,fo) ;
}

fclose(fp);
fclose(fo);
}



数据如下
G:\OUT1.TXT
3012 14 97.99 Canon CanoScan Flatbed Scanner
1012 12 24.95 Mini Pocket Camera
2011 4 14.95 VHS to VHS-HQ to S-VHS Magnifying Glass
1512 9 239.99 Heavy Duty Lens Cap
1021 20 49.95 Olympus iSnap APS
1023 15 74.95 Extra Huge Video Microphone
3011 13 32.99 Super-Duper Color Kodak Film
1032 15 310.55 JVC Magical Moments Camcorder
1041 10 389.00 Minolta Maxxum 5
5031 12 55.95 NiMH Rechargeable Batteries 4-pack
1042 11 349.95 NiMH Ultra Quickoid Battery Charger
4012 10 44.98 5-Legged Tripod
1043 20 319.90 Canon Faster Blaster SLR
5012 33 2.95 Pan-X Film, 1 Roll
3112 10 19.95 El-Cheapo 28MM Lens
1045 20 89.99 Ultra-Compact Video Midget-izer
1511 7 129.95 Micro-Macro Video Enhancer
1522 4 114.95 Sony Night Vision Digital Movie Maker
2012 12 48.55 Epson Perfection Flat Bed Photo Printer
1031 9 279.99 VHS to Compact Disc Translator
2013 10 28.99 Tri-color Film, 10 rolls
3013 13 87.95 SONY 1.5 Inch Television
5021 12 6.25 Toshiba 2 MegaPixel Digital Camera
3015 7 257.95 Black Plastic Camera Case
1044 13 119.95 Nifty Nuggett Pocket WebCam
1011 20 54.95 Telephoto Pocket Camera
3111 4 67.50 X-10 Ninja Pan 'N Tilt
1521 10 219.99 Light Duty Lens Cap
3511 10 159.99 3-Legged Tripod
4011 4 35.98 4-Legged Tripod
5011 17 4.29 1-Legged Tripod
1022 13 189.95 Nikon Coolest PIX Camera
3014 8 267.95 Wireless Audio Video Transmitter

搜索更多相关主题的帖子: 文件 数据 
2007-09-09 11:11
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
在线等.....感谢各位了!
2007-09-09 11:15
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
struct store
{
int item;
int stock;
float price;
char name;
}store[SIZE];
明显看的出来的基础不好,一个char能保存些什么?
并且你的文件内容不等长,根本不能这样做



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-09-09 11:19
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
本人新手...
用 char name[]呢?
应该用什么啊
2007-09-09 11:25
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
你的读文件方式已经决定是失败的
换一个吧



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-09-09 11:31
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
#include "stdio.h"
#include <stdio.h>


先去掉一个#include"stdio.h"再说

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-09-09 11:32
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
出现 floating poiner error:domain
null pointer assignmea
是什么意思?
2007-09-09 12:14
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 

如果换成以下的呢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#define SIZE 33
struct store
{
int item;
int stock;
float price;
char name[50];
}store[SIZE];

void main()
{
int i;

struct store sto[SIZE],*p,temp;
FILE *fp,*fo;

fp=fopen("G:\\OUT1.TXT","r+");

if(fp==NULL)
{
printf("\ncannot open the file!\n");
return;
}

p=sto;
while(feof(fp)==0)
{
fscanf(fp,"%-5d%-3d%-8.2f%-45s\n",p->item,p->stock,p->price,p->name);
p++;


}
fclose(fp);




for(p=sto;p<sto+SIZE;p++)
{ fo=fopen("G:\\tempotary.TXT","w+");
if(fo==NULL)
{
printf("\ncannot open the file!\n");
return;
}
p=sto;
fwrite(&sto,sizeof(struct store),1,fo);
fprintf(fo,"%-5d%-3d%-8.2f%-45s\n",p->item,p->stock,p->price,p->name);

}
fclose(fp);
fclose(fo);
}

菜啊...实在搞不定了...

[此贴子已经被作者于2007-9-10 10:13:45编辑过]

2007-09-09 12:19
biubui
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-6-27
收藏
得分:0 
一步一步调试,看看到底哪一步出的错。

2007-09-09 12:53
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
5555..继续求助中....
2007-09-10 10:14
快速回复:[求助]将一个文件数据进行排序后,将排序后的数据存入另一个文件中.... ...
数据加载中...
 
   



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

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