gpt4 book ai didi

c - 在字典中查找单词 C 编程

转载 作者:行者123 更新时间:2023-11-30 15:51:22 25 4
gpt4 key购买 nike

我有一个文本文件中的单词词典,我需要在文本文件中查找某些单词。例如由字母 {q, a, z, w, s, x, e, d, c, r, f, v,t,g,b} 组成的单词或以 {d,o 结尾的单词,我们}。我正在寻找一种方法可以做到这一点。将所有单词放入一个数组中是最简单的吗?或者我应该将其全部保留在文本文件中?我尝试过文本文件方法但被卡住了。这是我所拥有的。非常感谢!

 int size, count;

char *p;
char *words[];

FILE * dict_file;

dict_file = fopen("MyDictionary.txt", "r");

fseek(dict_file, 0, SEEK_END); // seek to end of file
size = ftell(dict_file); // get current file pointer
fseek(dict_file, 0, SEEK_SET); // seek back to beginning of file
// proceed with allocating memory and reading the file


p = dictionary;
while (p = fgets(p, size, dict_file))
{
p += strlen(p);

words[count] = p;

count++;
}

最佳答案

显然,这是错误的:

FILE * dict_file;
fseek(dict_file, 0, SEEK_END); // seek to end of file
size = ftell(dict_file); // get current file pointer
fseek(dict_file, 0, SEEK_SET); // seek back to beginning of file
// proceed with allocating memory and reading the file
dict_file = fopen("MyDictionary.txt", "r");

在打开文件之前,您无法(正确)使用它,因此中间三行肯定会产生一些不可预测的结果。大小很可能会变成负数或零,这两者都可能会扰乱以下 fgets 调用。

这没有显示在您的代码中,但我希望您正在调用 malloc() 或其他内容?

p = dictionary;

当您修复上述错误时,您可能需要替换以下内容:

  while (*p != '\0')
{
p += 1;
}

与:

  p += strlen(p)-1;   

[如果您确实希望每个字符串之间有 '\0',则可能需要删除 -1

现在,话虽如此,我可能会采取一种方法,即使用指向每个字符串的指针数组,而不是将所有内容存储在一个巨大的单个字符串中。这样,您就可以简单地从一个字符串移动到另一个字符串。您仍然可以像上面一样使用长字符串,但有一个辅助变量,其中的指针指向每个字符串的开头[并保留零,因此从上面删除-1。

然后我会编写一个函数来执行“这个字符串是否由这些字母组成”,另一个函数执行“是以这些字母结尾的字符串”。如果您了解一般如何进行字符串处理,那么两者都应该相对简单。

关于c - 在字典中查找单词 C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15180178/

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