求各位,看看为什么结果错了

题目是要求比较五个字符串,然后从小到大输出来,但是最后面结果只排序了首字母,为什么后面没有跟着排序啊,枯了

img

img

Swap 函数是用来交换两个字符串的,但实际上它只交换了字符串的第一个字符。这是因为 Swap 函数的参数是 char *,所以*a*b 只表示字符串的第一个字符。
因此,要修改 Swap 函数,让它交换字符串指针数组 p 中的指针,而不是交换字符串的字符。这样就可以正确地对字符串进行排序:

void Swap(char **a, char **b)
{
    if (strcmp(*a, *b) > 0)
    {
        char *temp = *a;
        *a = *b;
        *b = temp;
    }
}

Swap(&p[i], &p[j]);

swap()函数修改为:

void swap(char *a, char *b)
{
    char t[20];
    if (strcmp(a, b) > 0)
    {
        strcpy(t, a); 
        strcpy(a, b);
        strcpy(b, t); 
    }
}