gpt4 book ai didi

c - 来自 lfind 的段错误?

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

我在使用此代码的 lfind 调用中遇到段错误。 CVector 是一个带有名为 elems 的数组的结构。我知道 CVectorCreate 和 CVectorAppend 函数有效。第一 block 是测试代码,作为类的一部分提供,不能更改,第二 block 是我编写的函数调用。有人可以帮我确定我的问题吗?谢谢!

 char *jumbled = "xatmpdvyhglzjrknicoqsbuewf";
CVector *cv = CVectorCreate(sizeof(char), 4, NULL);
for (int i = 0; i < strlen(jumbled); i++)
CVectorAppend(cv, &jumbled[i]);
printf("\nDoing linear searches on unsorted cvector.\n");
char ch = '*';
Verify(0, CVectorSearch(cv, &jumbled[0], CmpCharElem, 0, false), "Linear search");




int CVectorSearch(const CVector *cv, const void *key, CVectorCmpElemFn cmpfn, int startIndex, bool isSorted)
{
assert(startIndex >= 0 && startIndex <= cv->logicalLength);
void *found = NULL;
if (isSorted == true) {
found = bsearch(key, (char *)(cv->elems) + (startIndex * cv->elemSize),
cv->logicalLength, cv->elemSize, cmpfn);
} else {
found = lfind(key, (char *)(cv->elems) + (startIndex * cv->elemSize), cv->logicalLength, cv->elemSize, cmpfn);
}

最佳答案

bsearch不同,lfind的第三个参数是一个指针。

 size_t nmemb = cv->logicalLength;
found = lfind(key, (char *)(cv->elems) + (startIndex * cv->elemSize),
&nmemb, cv->elemSize, cmpfn);

关于c - 来自 lfind 的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550154/

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