c语言请按照城市的名字(拼音)进行升序排序。 文本文件city.txt中存储了10个城市的名字
时间: 2024-02-12 09:08:02 浏览: 39
好的,可以使用C语言读取city.txt文件并进行升序排序。以下是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int cmp(const void *a, const void *b) {
return strcmp(*(const char**)a, *(const char**)b);
}
int main() {
FILE *fp;
char cities[10][MAX_LEN];
char *sorted_cities[10];
fp = fopen("city.txt", "r");
if (fp == NULL) {
printf("File not found!\n");
return 1;
}
int i = 0;
while (fgets(cities[i], MAX_LEN, fp)) {
cities[i][strcspn(cities[i], "\r\n")] = 0; // 去掉换行符
sorted_cities[i] = cities[i];
i++;
}
fclose(fp);
// 排序
qsort(sorted_cities, i, sizeof(char*), cmp);
// 打印排序后的结果
for (int j = 0; j < i; j++) {
printf("%s\n", sorted_cities[j]);
}
return 0;
}
```
这段代码首先打开名为city.txt的文件,并读取其中的城市名称,将其存储在一个二维字符数组cities中。然后将二维字符数组中的每个元素的地址存储在一个一维字符指针数组sorted_cities中,以便使用qsort函数排序。
排序函数cmp是用来比较两个字符串的,它会在qsort函数中被调用。最后,使用一个循环打印出排好序的城市名称。
请注意,此代码假设city.txt文件中每行仅包含一个城市名称,且每个城市名称的长度不超过MAX_LEN。如果文件格式不同或城市名称长度超过MAX_LEN,代码需要进行相应的修改。