C语言怎么在数组里排列字符串
时间: 2024-10-02 14:02:47 浏览: 40
在C语言中,要对字符串数组进行排序,通常不直接支持字符串数组的内建排序功能。然而,你可以使用一些外部库如`qsort()`函数或者自定义比较函数来实现。这里我们演示如何使用`strcmp()`函数配合`qsort()`来对字符串数组按照字母顺序进行排序。
首先,你需要包含必要的头文件并定义一个比较函数(比如`compare_strings`),它接受两个字符串作为参数并返回一个整数以指示它们的相对顺序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 比较两个字符串的ASCII码,用于排序
int compare_strings(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
int main() {
int num = 0;
int i = 0;
printf("please input the number of strings: ");
scanf("%d", &num);
// 动态创建字符串数组
char str[num][20];
for (i = 0; i < num; i++) {
printf("Please input string %d: ", i + 1);
scanf("%s", str[i]);
}
// 对字符串数组进行排序
qsort(str, num, sizeof(char*), compare_strings);
// 打印排序后的字符串
for (i = 0; i < num; i++) {
printf("%s\n", str[i]);
}
return 0;
}
```
在这个示例中,`compare_strings`函数通过`strcmp()`比较两个字符串,如果第一个字符串小于第二个,就返回负数;相等则返回零;大于则返回正数。`qsort()`函数会根据这个比较函数的返回值来调整数组元素的位置。
阅读全文