c - 如何在字典中找到找到的单词?
问题描述
我正在尝试创建一个存储单词及其定义的字典。
到目前为止,我已经完成了一些基本的事情,比如创建结构和空字典结构:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{
char wordInDictionary[32];
int numberOfMeanings;
char *wordDefinitions[10];
}Entry; //describes one entry in the dictionary
typedef struct{
int entries;
Entry *arrayOfEntries[100];
}Dictionary; //whole dictionary
Dictionary createDictionary(){
Dictionary emptyDictionary;
emptyDictionary.entries = 0;
int i,j;
for(i=0;i<100;i++){
emptyDictionary.arrayOfEntries[i] = (Entry*)malloc(sizeof(Entry*));
emptyDictionary.arrayOfEntries[i]->numberOfMeanings = 0;
strcpy(emptyDictionary.arrayOfEntries[i]->wordInDictionary, "hello"); //assigning "hello" string because want to test another function in main
for(j=0;j<10;j++){
emptyDictionary.arrayOfEntries[i]->wordDefinitions[j] =
(char*)malloc(500*sizeof(char*));
strcpy(emptyDictionary.arrayOfEntries[i]->wordDefinitions[j], "\0");
}
}
return emptyDictionary;
}
然后有一个指向 Entry 类型的函数,它搜索某个给定的word,它看起来如下:
Entry *searchWord(char word[], Dictionary *dict){
Entry *foundWord;
int i;
for(i=0;i<100;i++){
if(dict->arrayOfEntries[i]->wordInDictionary != word){
foundWord = NULL;
}else{
foundWord = dict->arrayOfEntries[i];
}
}
return foundWord;
}
因此,如果找到 word,则searchWord()应返回指向条目的指针,否则仅返回 NULL 指针。然后我测试了main()中的所有内容,但似乎searchWord()无法正常工作:
int main(){
Entry* newEntry;
Dictionary dict = createDictionary();
char word[] = "hello";
newEntry = searchWord(word, &dict);
if (newEntry != NULL) {
printf("\nWord found: '%s'", word);
} else {
printf("\nWord '%s' is not found in the dictionary.", word);
}
return 0;
}
即使在我的空字典中,我将每个单词都设为“hello”,但在控制台中程序输出:字典中找不到单词“hello”。可能的问题在哪里?
解决方案
这是你的问题:
if(dict->arrayOfEntries[i]->wordInDictionary != word){
foundWord = NULL;
如果你想比较字符串,你应该使用strcmp
:
if(strcmp(dict->arrayOfEntries[i]->wordInDictionary, word) != 0){
foundWord = NULL;
推荐阅读
- logging - 在用户登录时在 zend 记录器中设置额外字段
- c++ - (ROS) 如何用相对路径保存日志文件?
- php - 如何在 PHP 的邮件中使用 PHP 三元条件运算符?
- swift - Swift,隐藏/删除窗口(查看?)
- c - 指数函数图
- docker - Mysql 通过 ssh 远程连接到 kubernetes pod
- swift - 如何在 UITableiew 标题中添加自定义控件
- laravel - 在 nova 资源索引视图中显示特定的 eloquent 查询
- javascript - How do I change the format for my uptime command its currently hours I would like to change it to days
- firebase - Vue Firebase / Firestore 重复