C 语言怎样用冒泡或者选择排序算法将多个字符串进行排序,如果是Java语言就可以直接用字符串数组来操作,C语言该怎么操作呢?

是否可以用typedef 定义一个字符串数组为某种类型,之后再得到该种类型的一个数组,之后便可以比较?


void sort(char s[][50],size_t size)
{
    for(int i=0;i<size -1;i++)
        for(int j=0;j<size-i-1;j++)
            if (strcmp(s[j], s[j + 1]) > 0)//每个一维数组是一个字符串
            {
                char temp[50];//临时存储字符串
                strcpy(temp, s[j]);//采用strcpy给字符串赋值
                strcpy(s[j],  s[j + 1]);
                strcpy(s[j+1], temp);
            }
 
}
int main()
{
    char s[10][50];
    for (int i = 0; i < 10; i++)
        fgets(s[i],50,stdin);//从标准输入流读取一行字符存储到s[i]中
    sort(s,10);
    printf("排序后:\n");
    for (int i = 0; i < 10; i++)
        fputs(s[i],stdout);//将s[i]的字符串打印到输出流
    return 0;
}

c语言也一样的,字符串数组操作。

如下代码输入10个字符串,并采用冒泡排序输出。

#include<stdio.h>
#include<string.h>
void sort(char s[][50])
{
    for(int i=0;i<9;i++)
        for(int j=0;j<9-i;j++)
            if (strcmp(s[j], s[j + 1]) > 0)
            {
                char temp[50];
                strcpy_s(temp,50, s[j]);
                strcpy_s(s[j], 50, s[j + 1]);
                strcpy_s(s[j+1], 50, temp);
            }

}
int main()
{
    char s[10][50];
    for (int i = 0; i < 10; i++)
        gets(s[i]);
    sort(s);
    for (int i = 0; i < 10; i++)
        puts(s[i]);
    return 0;
}