c语言根据文本内每行数据的某个特定数据从小到大往下排列所有数据,再替换掉原来文本内容存储中
时间: 2024-02-12 13:04:32 浏览: 74
可以使用结构体来存储每行数据,然后根据特定数据进行排序,最后将排序后的数据再写回到原文件中。
下面是一个示例代码,假设每行数据包含两个整数,需要根据第一个整数从小到大排列:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int num1;
int num2;
} Data;
int cmp(const void *a, const void *b) {
Data *da = (Data *)a;
Data *db = (Data *)b;
return da->num1 - db->num1;
}
int main() {
FILE *fp;
Data data[1000];
int count = 0;
// 打开文件
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
// 读取文件内容
while (fscanf(fp, "%d %d", &data[count].num1, &data[count].num2) == 2) {
count++;
}
// 对数据进行排序
qsort(data, count, sizeof(Data), cmp);
// 将排序后的数据写回到文件
freopen("data.txt", "w", fp);
for (int i = 0; i < count; i++) {
fprintf(fp, "%d %d\n", data[i].num1, data[i].num2);
}
// 关闭文件
fclose(fp);
return 0;
}
```
需要注意的是,该程序假设每行数据仅包含两个整数,如果每行数据有多个数,需要根据实际需要进行修改。同时,也需要保证文件中的每行数据格式一致,否则程序可能会出错。
阅读全文