gpt4 book ai didi

c - 为什么这个 qsort() 不起作用?

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

正在对字符串数组进行排序(不区分大小写)。

qsort 导致段错误,可能是我的转换不正确。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *string1, const void *string2) {
char *a = (char*)(string1);
char *b = (char*)(string2);
printf("comparing %s AND %s\n", a, b);
return strcasecmp(a,b);
}

void sortListName(char **fileList, int noOfFiles) {
printf("Sorting\n");
qsort(fileList, noOfFiles, 260*sizeof(char), compare);
return;
}

**fileList = 字符串数组(文件名)

附言main() 很明显并且工作正常。

最佳答案

如果这是您与qsort 相关的所有代码,看起来您声明了comparePtr 函数指针,但它仍未初始化;它没有指向您的 compare 函数(我假设您希望它指向该函数)。

之后,还有一些事情:

1) comparePtr 有正确的类型,但是 compare 没有。它需要接受两个 const void*,但是你有两个 const void**
2) 一旦你修复了类型,你可以将 compare 传递给 qsort,而不是制作一个函数指针并传递它。
3) 我不相信 qsort 的第一个参数是正确的。您希望传递指向数组中第一个元素的指针,它应该只是 fileList(我假设它指向数组中的第一个字符串)。
4) 第三个参数也不正确。 fileList 是一个 char**,这意味着您要传入一个 char * 数组,因此第三个参数应该只是 sizeof(char*),而不是字符串的 strlen

关于c - 为什么这个 qsort() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391713/

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