文件类问题,c语言。

已存在一个文件,存放了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;
}