- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用此代码的 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/
我正在尝试使用结构体的第一个元素作为键来搜索大量结构体。由于数组已排序,因此 bsearch 很好并且适合我。然后我尝试使用 lfind 来仔细检查结果,但它给了我一些奇怪的输出。代码如下,正确的输出
我在使用此代码的 lfind 调用中遇到段错误。 CVector 是一个带有名为 elems 的数组的结构。我知道 CVectorCreate 和 CVectorAppend 函数有效。第一 bloc
具有某种类型元素的数组。有没有办法使用 lfind 来检索元素的索引而不是指向元素的指针? 最佳答案 你有指针。 从返回的指针中减去数组的开头 - 即索引。 编辑解释更多,以防万一: 当你声明一个数组
我正在用 C 编写一个 vector 。CVectorSearch 函数在排序时使用 bsearch,在未排序时使用 lfind。为什么我在调用 lfind 时收到警告“赋值从整数生成指针而不进行强制
做lfind/lsearch比检查每个项目直到匹配的典型循环解决方案执行得更好?存在这些功能是否有任何特殊原因/原因? 最佳答案 可能它们并不比自制版本更高效,甚至可能更低一些,因为无法内联比较函数。
我试图在 lfind 和 bsearch 返回指向它找到的元素的指针后获取数组中元素的索引。到目前为止我有这个: (char *) (found - cv->baseAddress); where f
我已经看过这个并尝试实现,但它总是给我一个段错误来这样做: Determining index from bsearch and lfind? - 这是供引用的链接。 基本上,我试图从 bsearch
我是一名优秀的程序员,十分优秀!