c语言从文件中读取数据,对数据进行冒泡,选择,插入三种排序

首先要使用c语言必须要有特定的语言来打开文本文件
“r”:只能从文件中读数据,该文件必须先存在,否则打开失败
“w”:只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件
“a”:向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾
“r+”:可读/写数据,该文件必须先存在,否则打开失败
“w+”:可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
“a+”:可读/写数据,原来的文件不被删去,位置指针移到文件末尾

要想对数据进行排序要先将数据录入一个数组中,再对数组处理就很简单了。这里主要的难度就在于如何将文本中的数据取出
#include <stdio.h>
#define N 10
#define K 10
void Write(double test[]);
void Read(int i,int a[]);
int main()
{
double test[K];int a[N],i;
Write(test);
Read(i,a);
}
void Write(double test[])
{
int x=6;
FILE *fp;
int i;
if((fp=fopen(“test.txt”,“w”))==NULL)
{
printf(“文件打开失败”);
}
fprintf(fp,"12 52 71 62 65 65 17 19 ",x);
fclose(fp);

}
void Read(int i,int a[])
{
int j;
FILE *fp;
if((fp=fopen(“test.txt”,“r”))==NULL)
{
printf(“文件打开失败”);
return -1;
}
while(1)
{
fscanf(fp,"%d",&a);
if(feof(fp))
break;
printf("%4d",a);
}
fclose(fp);
}

这是具体的代码要排序只需将最后打印部分改为排序所用的程序即可。
在编写过程中遇到的最多的问题就是:程序编译没有问题,但是结束显示确是“文件打开失败”
我无法直接读取文件,所以我通过先使用c语言对文档进行编译数据,在对文本文件提取数据结果是可以的,可能是我之前编写的读取程序有问题,后来进行了修改。所以现在只将上面程序的读取部分也可以完成。
虽然通过键盘直接输入数据对于排序来说十分简单,通过文件txt似乎多此一举,但实际上在对于一些复杂的数据时,通过键盘输入显然是不合适的,所以说学会熟练的使用c语言文件还是十分重要的

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C语言的文件操作函数和排序算法来实现文件内数据排序。下面是一个示例程序,可以将文件的整数按照从小到大的顺序排序,并将结果输出到另一个文件。 ```c #include <stdio.h> #include <stdlib.h> #define MAX_LEN 1000 int main() { FILE *in_file, *out_file; int data[MAX_LEN], n = 0, i, j, temp; // 打开输入文件 in_file = fopen("input.txt", "r"); if (in_file == NULL) { printf("Error opening file!\n"); exit(1); } // 读取文件数据 while (fscanf(in_file, "%d", &data[n]) == 1) { n++; } // 关闭输入文件 fclose(in_file); // 使用冒泡排序算法排序 for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } // 打开输出文件 out_file = fopen("output.txt", "w"); if (out_file == NULL) { printf("Error opening file!\n"); exit(1); } // 将排序后的结果输出到文件 for (i = 0; i < n; i++) { fprintf(out_file, "%d ", data[i]); } // 关闭输出文件 fclose(out_file); return 0; } ``` 在这个示例程序,我们首先使用 `fopen` 函数打开输入文件,然后使用 `fscanf` 函数读取文件数据,并将其存储在数组 `data` 。接着,我们使用冒泡排序算法对数组 `data` 进行排序。最后,我们使用 `fopen` 函数打开输出文件,然后使用 `fprintf` 函数将排序后的结果输出到文件。注意,这里使用的是 `fprintf` 函数而不是 `fscanf` 函数,因为我们要输出到文件而不是从文件读取数据。 当然,还有其他的排序算法可以用来进行文件内数据排序,比如选择排序插入排序、快速排序等,具体使用哪种算法取决于数据量的大小和排序的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值