【发布时间】:2020-05-19 17:06:28
【问题描述】:
所以我试图在一个名为 conj_str 的字符串数组中进行二进制搜索,要做的事情是我必须对其进行排序,而我试图使用 qsort 的问题是比较函数不起作用并且它没有排序任何东西.
程序:
#include<stdlib.h>
#include<stdio.h>
#include <string.h>
#define MAX_CHARS 1024
#define MAX_SIZE 10000
int compare (const void *a, const void *b)
{
const char *key = a;
const char * const *arg = b;
return strcmp(key, *arg);
}
int main()
{
int i;
char conj_str[MAX_SIZE][MAX_CHARS];
size_t len = sizeof(conj_str)/sizeof(const char *);
strcpy(conj_str[0],"fcb");
strcpy(conj_str[1],"bvb");
strcpy(conj_str[2],"slb");
strcpy(conj_str[3],"fcp");
strcpy(conj_str[4],"rma");
qsort (conj_str, len, sizeof (const char *), compare);
for (i = 0; i < 5; i++) {
printf ("%d: %s\n", i, conj_str[i]);
}
}
【问题讨论】:
-
qsort()的大小参数和比较函数错误,conj_str不包含字符指针 -
那我该怎么办?
-
@pmg 这跟我的问题有什么关系?
-
您从
bsearch()获得void*值。您应该将其转换为char*,但您将其转换为int*并将其分配给int??? -
关于我想要该数组中字符串的位置
标签: c multidimensional-array c-strings qsort bsearch