gpt4 book ai didi

c - 关于C中的函数指针?

转载 作者:行者123 更新时间:2023-12-02 18:34:15 25 4
gpt4 key购买 nike

我是C语言初学者,正在学习C语言中的函数指针。我遇到了问题吗?

编写一个比较函数来按名称的第一个字符排序?

*int (firstnamecharcompar)(const void * a, const void * b))

这是我的代码解决方案。

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

int compare1(const void *a,const void *b)
{
char *c = *(char**)a;
char *d = *(char**)b;
return c[0] - d[0];
//return ( *(char*)a[0] == *(char*)b[0] );
}

int main()
{
char str[3][10];
int i;
for(i=0;i<3;i++)
{
printf("Enter %d string => " , i+1 );
scanf("%s", str[i]);
printf("\n");
}

for(i=0;i<3;i++)
{
printf("%s ",str[i]);
}

qsort(str,3,10,compare1);

for(i=0;i<3;i++)
{
printf("%s ",str[i]);
}
return 0;
}

但是我的代码在没有给出任何输出的情况下就被终止了?我的代码有什么问题?

最佳答案

char *c = *(char**)a;
char *d = *(char**)b;

如果您对指向 char 的指针数组进行排序,这些行将有效。实际上,您正在对 10 个元素的 char 数组进行排序。相应地调整类型转换:

char *c = *(char(*)[10])a;
char *d = *(char(*)[10])b;

关于c - 关于C中的函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69008259/

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