用C语言实现五个随机字符串排序,要用到strlen
时间: 2024-11-03 13:18:19 浏览: 16
C语言求两个字符串的最长公共子串
5星 · 资源好评率100%
在C语言中,我们可以使用`<string.h>`库中的`strlen()`函数获取字符串长度,并结合其他数据结构如数组或动态内存分配来实现字符串的排序。这里提供一个基本的示例,展示如何使用冒泡排序算法对包含随机字符串的数组进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
// 定义字符串比较函数
int compare_strings(const char* str1, const char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 != len2)
return len1 - len2; // 如果长度不同,按长度升序
return strcmp(str1, str2); // 否则按字典序比较
}
void sort_random_strings(char** arr, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (compare_strings(arr[j], arr[j + 1]) > 0) {
// 交换字符串
char* temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
srand(time(0)); // 设置随机数种子
// 创建随机字符串数组
char** strings = malloc(sizeof(char*) * 5);
for (int i = 0; i < 5; i++) {
char random_str[100];
sprintf(random_str, "str%d", i);
strings[i] = strdup(random_str); // 动态分配内存
}
int size = 5;
sort_random_strings(strings, size);
// 打印排序后的字符串
for (int i = 0; i < size; i++) {
printf("%s ", strings[i]);
}
printf("\n");
// 清理内存
for (int i = 0; i < size; i++) {
free(strings[i]);
}
free(strings);
return 0;
}
```
阅读全文