题目是要求比较五个字符串,然后从小到大输出来,但是最后面结果只排序了首字母,为什么后面没有跟着排序啊,枯了
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);
}
}