gpt4 book ai didi

c - char 数组上的 stdlib.h qsort() 在 c 中崩溃

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

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

int cmpfunc(const void *a, const void *b) {
const char *ia = (const char*)a;
const char *ib = (const char*)b;
return *ia - *ib;
}

int is_permutation(char *s1, char *s2){
int i, n1, n2;


n1 = sizeof(s1)/sizeof(s1[0]);
n2 = sizeof(s2)/sizeof(s2[0]);


if(n1 != n2){
return 0;
}


qsort(s1, n1, sizeof(s1), cmpfunc);
qsort(s2, n2, sizeof(s2), cmpfunc);

for (i = 0; i < n1; i++)
if (s1[i] != s2[i])
return 0;

return 1;
}

int main(){
char s1[5] = "check";
char s2[5] = "check";

printf("%d", is_permutation(s1,s2));

return 0;
}

它只是崩溃,没有编译器错误。我已经检查过,qsort 使程序崩溃,其他一切似乎都正常工作。有帮助吗?

我用“gcc -g -ansi -pedantic -Wall prog.c -o prog”编译

最佳答案

sizeof(s1) &c。 不是数组中元素数量的函数。这是因为 s1退化为指针类型。

strlen 可用于获取字符串的长度,但您需要编写

char s1[6] = "check";

或者更好的是,

char s1[] = "check";

为 NUL 终止符留出空间。

关于c - char 数组上的 stdlib.h qsort() 在 c 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683260/

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