使用c语言以数据结构的方式请编写程序从D:\source.txt中读出数据,从教材里的排序算法中选择一种对这些数据进行排序,然后将排序后的数据写入新文件D:\target.txt中。
时间: 2024-03-12 08:46:25 浏览: 61
好的,这里是一个使用快速排序算法对文件数据进行排序并写入新文件的程序。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 1000
void quick_sort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
int temp;
while(i <= j) {
while(arr[i] < pivot) {
i++;
}
while(arr[j] > pivot) {
j--;
}
if(i <= j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if(left < j) {
quick_sort(arr, left, j);
}
if(i < right) {
quick_sort(arr, i, right);
}
}
int main(void) {
int arr[MAX_SIZE], num, i;
FILE *fp_in, *fp_out;
// 打开输入文件
fp_in = fopen("D:\\source.txt", "r");
if(fp_in == NULL) {
printf("Error opening source file!\n");
exit(1);
}
// 读入数据
i = 0;
while(fscanf(fp_in, "%d", &num) == 1) {
arr[i] = num;
i++;
}
fclose(fp_in);
// 对数据进行排序
quick_sort(arr, 0, i - 1);
// 打开输出文件
fp_out = fopen("D:\\target.txt", "w");
if(fp_out == NULL) {
printf("Error creating target file!\n");
exit(1);
}
// 将排序后的数据写入输出文件
for(i = 0; i < n; i++) {
fprintf(fp_out, "%d ", arr[i]);
}
fclose(fp_out);
return 0;
}
```
这个程序中,我们首先打开输入文件,读取数据并存储在一个数组中。然后,我们使用快速排序算法对数组进行排序。最后,我们打开输出文件,将排序后的数据写入其中。
请注意,此程序仅适用于整数类型的数据。如果您的数据类型不同,请相应地更改程序中的格式说明符和数组类型。
阅读全文