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

以下是自己写的代码,没有运行成功.....
按照第一列的数字(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
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
本人新手...
用 char name[]呢?
应该用什么啊
2007-09-09 11:25
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
liaoyange
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-9
收藏
得分:0 
5555..继续求助中....
2007-09-10 10:14
快速回复:[求助]将一个文件数据进行排序后,将排序后的数据存入另一个文件中.... ...
数据加载中...
 
   



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

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