C语言如何对文件中的数据进行排序

作者&投稿:泣闵 (若有异议请与网页底部的电邮联系)
C语言 读文件 并对数据排序输出~

#include #include struct node{ char id[100]; char name[20]; int year; int month; int day; double ton; char city[80];}log[1005];int count;int cmp(const void *a , const void *b){ node * c = (node *) a; node * d = (node *) b; if(c -> year != d -> year) return (c->year) - (d->year); if(c -> month != d -> month) return (c->month) - (d->month); return (c->day) - (d->day);}int loadfile(){ FILE *fp = NULL; fp = fopen("file15.txt","r"); if(fp == NULL) { printf("load file15.txt error!
"); return -1; } count = 0; while(!feof(fp)) { fscanf(fp , "%s %s %d-%d-%d %lf %s",log[count].id,log[count].name,log[count].year,log[count].month,log[count].day,log[count].ton,log[count].city); count ++; } return 0;}void output(){ int i; for(i=0;i<count;i++) { printf("%s%s%d-%d-%d%lf%s
",log[i].id,log[i].name,log[i].year,log[i].month,log[i].day,log[i].ton,log[i].city); }}int main(){ loadfile(); qsort(log,count,sizeof(node),cmp); output(); return 0;}注释和菜单栏你自己加吧,主要的部分给你写了,菜单栏就直接printf 和 scanf完成就可以

#include
#include
//假设要打开的文件内容全是整数(如果是浮点数参照修改)
//数据与数据之间用空格分开
//每行多少数据可以不相同

//数组从小到大排序
void sortit(int *a,int n) {
int i,j,m;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j]){
m=a[i];a[i]=a[j];a[j]=m;
}
}
//输出数组元素
void printit(int *a,int n){
int i;
for(i=0;i<n;i++){
printf("%5d",a[i]);
if (i%10==9) printf("
"); //设置每10个换行
}
}
//从文件fp中读取n个数据到a
void getdata(FILE *fp,int *a,int n){
int i;
fseek(fp,0,0);
for(i=0;i<n;i++)
fscanf(fp,"%d",&a[i]);
}

//获取文件中整数数椐的个数
int getdatabound(FILE *fp){
int i=0,n;
fseek(fp,0,0);
while(fscanf(fp,"%d",&n)!=EOF) i++;
return i;
}
int main(){
int n,*a;
char *myfile="d:\\data.txt";
FILE *fp;
if ((fp=fopen(myfile,"r"))==NULL){
printf("打开文件%s失败
",myfile);
return 0;
}
n=getdatabound(fp); //获取该文件中有多少整数
printf("该文件共有%d个整数
",n);
a=(int *)malloc(sizeof(int)*n); //分配n个整数的空间
getdata(fp,a,n); //从文件fp中读取n个数据到a
fclose(fp);
printf("排序前的数组
");
printit(a,n); //输出数组的值
printf("
");

sortit(a,n);

printf("排序后的数组
");
printit(a,n);
printf("
");
}

根据文件中数据存储方式, 定义数组。
然后从文件中读取数据到数组中。
对数组进行排序。
排序后, 重新写入到文件。


如何在c语言中清空文件里的内容(很急)
如何在c语言中清空文件里的内容的方法。如下参考:1.打开Sublime文本,创建一个新的Czhidao文件,然后导入C库,如下所示。2.接下来,创建C语言的主函数,文件的操作将在主函数中进行,如下图所示。3.接下来,调用C语言的fopen函数打开文件,如下图所示。4.打开文件后,您可以通过fgetc函数读取并获取...

C语言如何将文件中特定的字符串输出到屏幕
include <stdio.h>#include <string.h>#define N 8void sort(char s[][81],int n) {int i,j,k;char tmp[81];for(i = 0; i < n - 1; ++i) {k = i;for(j = i + 1; j < n; ++j) {if(strcmp(s[k],s[j]) > 0)k = j;}if(k != i) {strcpy(tmp,s[k])...

用C语言如何从一个文本文件中读入姓名信息
第一,包含的头文件:include <stdio.h> 第二,打开文本文件:FILE *file = fopen("c:\\\\1.txt","r");其中,第二个参数表示打开方式,"a" 表示追加方式打开,"r" 表示以读方式打开,"w" 表示以写方式打开,第三,读入文本文件中的数据:char s[10] = "";while (!feof(file))fread(s...

C语言中怎么把很多份.txt文件中的数据用文件函数赋值到结构体中?
CFindFile类里面的findfile函数和findnextfile函数来查找文件夹中的文件名。再用文件函数读取各个文件

C语言中如何读取以逗号分割的文件中的数据?
对于这个问题,有两种解决方案。一,直接用scanf进行格式化输入。满足以下两种条件可以用scanf进行输入:1 要输入的数据中不能有空白符号,因为用scanf输入时空白符号会被忽略。空白符号包括空格(' '),制表符('\\t'),换行符('\\n')等。2 文件中被分隔开的数据类型是以一定的固定规律出现的。举几个...

用C语言将文本文件中的数据(一个个结构体类型的数据)读到链表中去,代码...
这是我最开始学习链表的时候写的一个很小的程序,好像不是很完善,但是大致应该没有问题,你可以参照的看看。太晚了,实在是不想写了。include <stdio.h>#include <io.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define MAX 200struct student{char no[10]; \/\/ 学号char...

C语言中如何将文本文件中的数字读入
voidmain(){ FILE*fin;inta,b,c,d;chars[20];floatf1,f2,f3,f4;fin=fopen("abc.txt","r");\/\/打开 fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);\/\/按1位整型读前4个数 printf("a=%db=%dc=%dd=%d\\n",a,b,c,d);rewind(fin);\/\/文件回绕到开始处 fscanf(fin,"%s",s);...

怎么对C语言中的文件进行内容添加,删除,查找的操作?
c语言文件操作13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文...

C语言中如何引用其它C源文件中的函数?
1、在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};。在A1.c中:在文件前头增加一行:void A2();就可以了。2、把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include "A2.h"...

如何用c语言从txt文件中读取数据
用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。一、打开文件:FILE fopen(const char filename,const char mode);因为txt文件为文本文件,所以打开时选择的mode应为"r"或者"rt"。二、读取文件:读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用...

青山区19627741750: C语言如何对文件中的数据进行排序 -
归邦参芪: 根据文件中数据存储方式, 定义数组. 然后从文件中读取数据到数组中. 对数组进行排序. 排序后, 重新写入到文件.

青山区19627741750: C语言排序的方法 -
归邦参芪: 现在流行的排序有:直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序.对n个记录进行选择排序的方法是:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)...

青山区19627741750: C语言中的排序法 -
归邦参芪: c语言中排序法有选择法和冒泡法是最常见的. 1冒泡法对10个数排序 #include<stdio.h> void main () { int a[10]; int i,j,t; printf("please input 10 numbers:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) //进行9次循环,实...

青山区19627741750: C语言怎样实现读取文件内数据并排序,再输出到新的文件里? -
归邦参芪: fopen() 改为: if((fp=fopen("1s.txt","w+"))==NULL) fputc(p,fp); 改为:fprintf(fp,"%d",p); 读语句前,加一句文件回绕到文件头: rewind(fp); ---------------- int main(){ FILE *fp; char read[1000]; char s; long p; if((fp=fopen("1s.txt","w+")...

青山区19627741750: C语言数据排序 -
归邦参芪: /*选择排序法:从小到大排列10个数并输出*/#include<stdio.h>#define N 10 //可修改输入个数 void main() { int i,a[N],t,j; for(i=0;i<N;i++) scanf("%d",&a[i]); //输入 for(j=1;j<N;j++) //N次比较 for(i=0;i<j;i++) //每趟中比j次if(a[i]>a[j]) //与a[i]后面的元素进行比较 { t=a[i];a[i]=a[j];a[j]=t; } printf("排序后:\n"); for(i=0;i<N;i++) printf("%d ",a[i]); printf("\n"); }

青山区19627741750: 用c语言如何读入并使文本文件按某一列排序输出? -
归邦参芪: 你可以酱紫:# include <stdio.h> int main(void) { FILE *p;//文件指针 char ch[1000];//1000你可以改滴~ int i = 0; p = fopen("", "r");//第一个字符串是你文件路径,路径中的\要写成\\,文件名必须带后缀 if (!p)//如果文件打开失败,fopen返...

青山区19627741750: C语言编程,读文本文件,文件内容排序 -
归邦参芪: #include <stdio.h> main() { FILE* pFile = NULL; int data[256], n = 0; pFile = fopen("1.txt","r"); while(fscanf(pFile, "%d\n", &data[n]) != EOF) { n++; } for(; n >= 0; n--) { printf("%d\n", data[n]); } fclose(pFile); }

青山区19627741750: 如何用c语言编程输入一个文档里的数据并进行重排然后输出,急 -
归邦参芪: #include <stdio.h> FILE *fr, *fw; int a[150001]; int n; //数据数量 void quicksort(int s, int t); int main() { int i; fr = fopen("sort.in", "r"); fw = fopen("sort.out", "w"); n = 1; while(fscanf(fr, "%d", &a[n]) != EOF) n++; n--; //输入 quicksort(1, n); ...

青山区19627741750: C语言 读文件 并对数据排序输出 -
归邦参芪: #include <stdio.h>#include <stdlib.h> struct node { char id[100]; char name[20]; int year; int month; int day; double ton; char city[80]; }log[1005]; int count; int cmp(const void *a , const void *b) { node * c = (node *) a; node * d = (node *) b; if(c -> year !...

青山区19627741750: C语言中将三个数字进行排序的几种写法 -
归邦参芪: 方法1:用3个变量存放3个数字,按从大到小的顺序排: int a,b,c,tmp; printf("请输入3个数字:"); scanf("%d%d%d",&a,&b,&c); if(a<b)//如果a比b小,交换a和b的值,使a存放大的数字 { tmp=a; a=b; b=tmp; } if(a<c)//如果a比c小,交换a和...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网