gpt4 book ai didi

c - 在C中对char指针数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:10 24 4
gpt4 key购买 nike

我正在尝试对 char 指针数组进行排序,为此我使用了 qsort 函数,但我无法理解我做错了什么以及如何对该数组进行排序。

int StringCompare( const void* a, const void* b)
{
char const *char_a = (char const *)a;
char const *char_b = (char const *)b;

return strcmp(char_a, char_b);
}

int main() {
char *a[] = { "Garima",
"Amit",
"Gaurav",
"Vaibhav"
};

int n;

qsort( a, 4, sizeof(char*), StringCompare);
for (n=0; n<4; n++)
printf ("%c ",*a[n]);
}

输出是:G A G V

最佳答案

问题是传递给排序函数(也称为 StringCompare)的值是指向 a 数组的指针。换句话说,它们是 const char ** 类型。

您需要将 char_achar_b 声明为 const char **,并在对 strcmp< 的调用中取消引用它们:

int StringCompare( const void* a, const void* b)
{
char const **char_a = a;
char const **char_b = b;

return strcmp(*char_a, *char_b);
}

另请注意强制转换是不必要的。

关于c - 在C中对char指针数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com