- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道为什么这段代码不起作用,我做错了什么?对于大学作业,我需要使用二分搜索来搜索带有名称的文件。
无论我如何尝试,结果始终是“在数组中找不到”。
#define TAM 10
#define NUM 10
int cmpfunc (const void * a, const void * b){
return (strcmp(a, b));
}
void binary_search (char str[][TAM]){
char * ptr_item;
char searchkey[TAM];
printf ("Enter a searchkey: ");
scanf ("%s", &searchkey);
ptr_item = (char*)
bsearch (&searchkey,str,NUM, sizeof(char*), cmpfunc);
if (ptr_item!=NULL)
printf ("%s found in the array.\n",ptr_item);
else
printf ("%s not found in the array.\n",searchkey);
return 0;
}
为了添加到主函数中,我使用此代码来读取文件,这一点工作正常。
void read (char str[][TAM]){
FILE *file;
file = fopen("Lista.txt", "r");
if(file == NULL){
printf("Arquivo não pode ser aberto!\n");
system("pause");
exit(0);
}
char nome[TAM];
for(int i=0; i<NUM;i++){
fgets(str[i], TAM, file);
}
fclose(file);
}
这是Lista.txt
的内容:
CHRISTIA
EBONIE
EMERSON
FLORIA
JOSEFINA
LAURO
MERRILEE
MILISSA
NANCY
RUTHAN
SHARAN
SHIRLEEN
TERI
主程序代码如下:
int main(){
char *str[NUM][TAM];
read(str);
binary_search (str);
return 0;
}
最佳答案
bsearch (&searchkey,str,NUM, sizeof(char*), cmpfunc);
// ------------- <--- wrong
您的数组包含 char[TAM]
类型的元素,而不是 char*
类型的元素。 这些类型并不相同。
fgets(str[i], TAM, file);
fgets
不会从字符串末尾删除换行符或任何其他空格。
scanf ("%s", &searchkey);
scanf("%s",...)
不会读取空格,包括换行符。
关于c - 使用 bsearch 和 cstring,没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44618135/
要么 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 用于调试目的,因
我是一名优秀的程序员,十分优秀!