c语言根据文本内每行某个特定类型数据从小到大往下排列代码
时间: 2023-12-01 14:04:02 浏览: 66
以下是一个根据文本内每行整数数据从小到大排列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINES 1000
#define MAX_LINE_LENGTH 100
// 从文本文件读取数据并存储到二维数组中
int read_data(int data[][MAX_LINE_LENGTH], const char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Error: failed to open file.\n");
return 0;
}
int row = 0;
while (fgets(data[row], MAX_LINE_LENGTH, fp) != NULL) {
row++;
if (row >= MAX_LINES) {
printf("Error: too many lines.\n");
break;
}
}
fclose(fp);
return row;
}
// 从每行数据中提取特定类型的数据并存储到一维数组中
int extract_integers(int data[][MAX_LINE_LENGTH], int integers[], int num_lines) {
int count = 0;
for (int i = 0; i < num_lines; i++) {
char *p = data[i];
while (*p != '\0') {
if (*p >= '0' && *p <= '9') {
integers[count] = strtol(p, &p, 10);
count++;
} else {
p++;
}
}
}
return count;
}
// 比较函数,用于qsort排序
int cmp(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int data[MAX_LINES][MAX_LINE_LENGTH];
int integers[MAX_LINES * MAX_LINE_LENGTH];
int num_lines, num_integers;
num_lines = read_data(data, "data.txt");
num_integers = extract_integers(data, integers, num_lines);
qsort(integers, num_integers, sizeof(int), cmp);
for (int i = 0; i < num_integers; i++) {
printf("%d ", integers[i]);
}
printf("\n");
return 0;
}
```
这个程序中,我们首先从给定的文本文件中读取每行数据,然后从每行数据中提取整数,并存储到一个一维数组中。最后,我们使用标准库函数 `qsort` 对整数数组进行排序,然后输出排序后的结果。
阅读全文