C语言实现将resource文件夹下面的1.txt,2.txt,3.txt三个文件里面的数据合并后按升序排
时间: 2024-01-12 10:04:51 浏览: 32
实现步骤如下:
1. 打开三个文件,读取文件中的数据,并将数据存储到一个数组中。
2. 关闭文件。
3. 对数组进行排序。
4. 打开一个新文件,将排序后的数据写入文件中。
5. 关闭文件。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 1000
int main() {
int data[MAX_SIZE];
int size = 0;
FILE *fp1, *fp2, *fp3, *fp_out;
// 打开三个文件并读取数据
fp1 = fopen("resource/1.txt", "r");
if (fp1 == NULL) {
printf("无法打开文件1.txt\n");
return 1;
}
while (fscanf(fp1, "%d", &data[size]) == 1) {
size++;
}
fclose(fp1);
fp2 = fopen("resource/2.txt", "r");
if (fp2 == NULL) {
printf("无法打开文件2.txt\n");
return 1;
}
while (fscanf(fp2, "%d", &data[size]) == 1) {
size++;
}
fclose(fp2);
fp3 = fopen("resource/3.txt", "r");
if (fp3 == NULL) {
printf("无法打开文件3.txt\n");
return 1;
}
while (fscanf(fp3, "%d", &data[size]) == 1) {
size++;
}
fclose(fp3);
// 排序
qsort(data, size, sizeof(int), cmp);
// 打开输出文件并写入数据
fp_out = fopen("output.txt", "w");
if (fp_out == NULL) {
printf("无法打开输出文件\n");
return 1;
}
for (int i = 0; i < size; i++) {
fprintf(fp_out, "%d ", data[i]);
}
fclose(fp_out);
return 0;
}
int cmp(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
```
需要注意的是,如果文件中的数据不是按照升序排列的,那么在排序时需要使用一个比较函数。上面的代码中使用了 qsort 函数和 cmp 函数进行排序。