尝试运行Anagram时发出警告(John Bentley Programming Pearls)-C

尝试运行Anagram时发出警告(John Bentley Programming Pearls)-C,c,qsort,C,Qsort,对C完全陌生。只是想通过运行John Bentley的Anagram(我相信是第2列)程序来掌握linux和C编程的诀窍。我很确定我是逐字复制了这段代码(必须添加标题等),但我收到了一条警告,当编译并使用我的squash.c程序运行时,会给出不希望的输出。我承认,我甚至不知道这个charcomp函数是如何工作的,或者它到底是做什么的。(也会有一些启示) 该函数将比较函数作为第四个参数,并带有以下签名: int (*compar)(const void *, const void *) int

对C完全陌生。只是想通过运行John Bentley的Anagram(我相信是第2列)程序来掌握linux和C编程的诀窍。我很确定我是逐字复制了这段代码(必须添加标题等),但我收到了一条警告,当编译并使用我的squash.c程序运行时,会给出不希望的输出。我承认,我甚至不知道这个charcomp函数是如何工作的,或者它到底是做什么的。(也会有一些启示)

该函数将比较函数作为第四个参数,并带有以下签名:

int (*compar)(const void *, const void *)
int charcomp(const void *x, const void *y) { return *(char *)x - *(char *)y; }
因此,为了避免编译器警告,您必须以以下方式修改
charcomp()
函数,以适应该签名:

int (*compar)(const void *, const void *)
int charcomp(const void *x, const void *y) { return *(char *)x - *(char *)y; }
您的
charcomp
函数只获取两个指向第一个字符的
char*
指针并比较它们的第一个字符。

该函数将比较函数作为第四个参数,并带有以下签名:

int (*compar)(const void *, const void *)
int charcomp(const void *x, const void *y) { return *(char *)x - *(char *)y; }
因此,为了避免编译器警告,您必须以以下方式修改
charcomp()
函数,以适应该签名:

int (*compar)(const void *, const void *)
int charcomp(const void *x, const void *y) { return *(char *)x - *(char *)y; }

您的
charcomp
函数只需要取两个
char*
指针,并比较它们的第一个字符。

编程珍珠作为语言入门书?奇怪。编程珍珠作为语言入门书?奇怪的