已存在一个文件,存放了10个整形数据编程,将其排序后存入另外一个文件中
你可以使用C语言的fread函数读取文件中的整型数据,然后使用qsort函数对这些数据进行排序,最后使用fwrite函数将排序后的数据写入另外一个文件中。
例如,你可以使用下面的代码来实现这个功能:
#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 50
int compare(const void* a, const void* b) {
return (*(int*)a) - (*(int*)b);
}
int main() {
// 打开输入文件和输出文件
FILE* fin = fopen("input.txt", "r");
FILE* fout = fopen("output.txt", "w");
// 读取数据
int data[BUF_SIZE];
size_t read_count = fread(data, sizeof(int), BUF_SIZE, fin);
// 排序
qsort(data, read_count, sizeof(int), compare);
// 写入文件
fwrite(data, sizeof(int), read_count, fout);
// 关闭文件
fclose(fin);
fclose(fout);
return 0;
}
这段代码会读取输入文件中的整型数据,然后使用qsort函数对数据进行排序,最后使用fwrite函数将排序后的数据写入输出文件。
你也可以使用C语言的fgets函数读取文件中的字符串数据,然后将其转换为整型数据,再使用qsort函数对数据进行排序。例如,你可以使用下面的代码来实现这个功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 50
int compare(const void* a, const void* b) {
return (*(int*)a) - (*(int*)b);
}
int main() {
// 打开输入文件和输出文件
FILE* fin = fopen("input.txt", "r");
FILE* fout = fopen("output.txt", "w");
// 读取数据
char buf[BUF_SIZE];
int data[BUF_SIZE];
int count = 0;
while (fgets(buf, BUF_SIZE, fin) != NULL) {
// 去除换行符
if (buf[strlen(buf) - 1] == '\n') {
buf[strlen(buf) - 1] = '\0';
}
// 将字符串转换为整型数据
data[count++] = atoi(buf);
}
// 排序
qsort(data, count, sizeof(int), compare);
// 写入文件
for (int i = 0; i < count; i++) {
fprintf(fout, "%d\n", data[i]);
}
// 关闭文件
fclose(fin);
fclose(fout);
return 0;
}
以下从一个文件读取数据,并将其排序后写入另一个文件,望采纳
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
// 比较两个整数的大小
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int data[MAX_SIZE];
// 从输入文件中读取数据
FILE *input_file = fopen("input.txt", "r");
for (int i = 0; i < MAX_SIZE; i++) {
fscanf(input_file, "%d", &data[i]);
}
fclose(input_file);
// 对数据进行排序
qsort(data, MAX_SIZE, sizeof(int), compare);
// 将排序后的数据写入输出文件
FILE *output_file = fopen("output.txt", "w");
for (int i = 0; i < MAX_SIZE; i++) {
fprintf(output_file, "%d\n", data[i]);
}
fclose(output_file);
return 0;
}