- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
bserach() 函数应该返回 NULL,但当它无法在给定数组中找到键时,我得到的是 (nil)。出了什么问题?
#include <stdio.h>
#include <stdlib.h>
int cmpfunc(const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int values[] = { 5, 20, 29, 32, 63 };
int main ()
{
int *item;
int key = 10;
/* using bsearch() to find value 32 in the array */
item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
if( item != NULL )
{
printf("Found item = %d\n", *item);
}
else
{
printf("Item = %d could not be found\n", *item);
}
return(0);
}
最佳答案
在你的代码中,在else
部分
if( item != NULL )
{
printf("Found item = %d\n", *item);
}
else
{
printf("Item = %d could not be found\n", *item);
}
即使 item
为 NULL
,您也会取消引用它 [*item
]。请不要这样做。
要解决保持信息性输出消息完整的问题,也许您可以使用一些东西
printf(" Any item with related key value %d could not be found\n", key);
当 item
为 NULL
时。
关于c - bsearch() 返回 (nil),导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821509/
要么 cmp func 似乎工作;无法理解在 qsort_cmp 的情况下如何解析 int* 类型的 arg1。 据我所知:int* 被传递给 qsort_cmp,在那里它被更改为 void*,然后在
我有一个看起来像这样的结构: typedef struct dictionary_t{ char word[30]; int foo; int bar; } dictionar
我有一个struct employee比较器和main: #define MAX_SIZE 20 typedef struct Employee{ char name[MAX_SIZE];
我有一个按降序排序的数组,没有重复项。我可以使用 libc 中的 bsearch 函数对其执行二分搜索吗?为此,我是否需要更改传递给它的比较函数? 谢谢 最佳答案 是的,您可以使用bsearch。您需
我有一个结构: typedef struct entry_t { char * name; int lines [MAX]; int n;/*n lines*/ } entry_t; 和一
已修复。 包括 main() { int n; int i; char tempMonth[255]; //Used to store the month until chec
我在进行此搜索时遇到了问题。我非常确定我已经将问题与 bsearch 接受的字节数参数隔离开来。数据数组是一个拼字词典,我 100% 确定整个字典已加载到内存中,但是当我使用 bsearch 时尝试查
我有函数调用 userInteractive(*anangramInfo) ,它传入结构 anangramInfo 的指针,并且该结构包含指向实际字谜词的指针“anagramPointer”。所以,我
我正在尝试在预先排序的数组中查找用户输入的字符串。如果我编写自己的二分查找函数,输入就会被正确找到。如果我使用 C bsearch,我总是得到一个 NULL 指针。 这是相关的代码片段: printf
谁能告诉我为什么以下代码中的 bsearch() 在列表中找不到项目“getwidth”?我尝试了几个编译器,但它们都不适用,所以它一定是我的代码中的一个错误。但是,我真的看不出那里有什么问题。传递给
我正在努力在我的代码中执行 bsearch() 中的比较功能。显然,我想根据包含结构 (word_dict_t) 的字典数组上的键字符串(来自链表)进行二进制搜索 typedef struct {
有没有办法做这样的事情? int key=50; int loop=5; int array[10]={...}; int* Ptr=NULL; qsort(array, 10, sizeof(int
在 C 中使用 bsearch 未能在结构数组中找到字符串“Eva Lam”。此数组按字符串成员的降序排序。检查了很多次,还是不知道bug在哪里?顺便说一句,我正在使用 DEV C++ 5.9.4。请
bsearch 非常适合直接搜索,但是如果我需要例如搜索范围,我应该使用什么? 更新 例如,如果我想找到 a 和 b 之间的值范围 (a >= x < b)。 更新 范围值可以不相等。所以如果我有数组
我有以下程序: #include #include #include #include #include #define DICT_BUFSIZE 64 int compar(const v
我有一个未分类的字典文件,名为“dict.txt”。我已经设法将文件中的单词放入数组中,而且我使用的 qsort() 似乎也工作正常(也就是说,数组已排序)。 当我调用 bsearch() 时出现问题
我有一个指向整数的地址数组(这些整数升序排列)。它们具有重复值。例如:1,2、2、3、3、3、3、4、4…… 我正在尝试获取所有大于 a 的值一定的值(value)(关键)。目前正在尝试使用二进制来实
我有一个这样的数组: typedef struct INSTR { char* str; int argc; } INSTR; const static INSTR instruct
在 C(标准库)中使用 bsearch() 可以快速找到排序数组中的条目。 但是,如何计算插入新条目的位置(使用标准库)? bsearch() 专门检查找到的项目的键是否等于传递的键,如果不是,则返回
我在尝试对 C 中的字符串数组使用 c 内置 bsearch 时遇到一些令人困惑的行为。这是代码。我知道您可以使用内置的 strcmp 来搜索字符串数组,但我包含了 myStrCmp 用于调试目的,因
我是一名优秀的程序员,十分优秀!