假设两个文本文件里分别有一行用空格分隔的整数,用c语言比较两个文本里的整数,然后联合排序后放在第三个文本文件里
时间: 2024-02-25 14:54:19 浏览: 56
以下是一个简单的例子,演示如何读取两个文件的整数、排序它们并将它们写入第三个文件中:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp1, *fp2, *fp3;
int num1, num2, count = 0;
int *nums; // 用于存储所有整数的数组
int i, j, temp;
fp1 = fopen("file1.txt", "r"); // 打开第一个文件
fp2 = fopen("file2.txt", "r"); // 打开第二个文件
fp3 = fopen("file3.txt", "w"); // 打开第三个文件
if (fp1 == NULL || fp2 == NULL || fp3 == NULL) { // 如果有任何一个文件打开失败
printf("Error opening file\n");
return -1;
}
// 计算文件中的整数数量
while (fscanf(fp1, "%d", &num1) != EOF) {
count++;
}
while (fscanf(fp2, "%d", &num2) != EOF) {
count++;
}
// 分配一个足够大的数组来存储所有整数
nums = (int *) malloc(count * sizeof(int));
// 将所有整数读入数组中
rewind(fp1); // 将文件指针重置到文件开头
rewind(fp2);
i = 0;
while (fscanf(fp1, "%d", &num1) != EOF) {
nums[i++] = num1;
}
while (fscanf(fp2, "%d", &num2) != EOF) {
nums[i++] = num2;
}
// 对数组中的所有整数进行排序
for (i = 0; i < count - 1; i++) {
for (j = i + 1; j < count; j++) {
if (nums[i] > nums[j]) {
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
// 将排好序的整数写入第三个文件中
for (i = 0; i < count; i++) {
fprintf(fp3, "%d ", nums[i]);
}
free(nums); // 释放数组内存
fclose(fp1); // 关闭第一个文件
fclose(fp2); // 关闭第二个文件
fclose(fp3); // 关闭第三个文件
return 0;
}
```
在上面的例子中,我们首先打开了三个文件,然后计算文件中的整数数量并分配一个足够大的数组来存储所有整数。接下来,我们将所有整数读入数组中,并对数组中的所有整数进行排序。最后,我们将排好序的整数写入第三个文件中,并关闭所有文件。
阅读全文