gpt4 book ai didi

C语言拼写检查程序

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:42 25 4
gpt4 key购买 nike

我是 C 编程的初学者。我正在尝试学习如何编写一个拼写检查器来查看字典文件中的所有单词,将它们与一篇文章进行比较,将字典文件中不存在的所有单词打印到控制台上。由于我在类里面学习malloc,所以我将每个单词小写,删除所有文章中的标点符号,并将它们复制到malloc中。我不知道下一步应该是什么,有人会给我提示吗?谢谢

主程序

#include <stdio.h>
#include <stdlib.h>
char dictionary[1000000];
char article[100000];

void spellCheck(char[], char[]);

int main(void) {
FILE* dict_file;
FILE* article_file;
int bytes_read;
char* p;
dict_file = fopen("american-english.txt", "r");
if (dict_file == 0) {
printf("unable to open dictionary file \"american-english.txt\"\n");
return -1;
}

article_file = fopen("article.txt", "r");
if (article_file == 0) {
printf("unable to open file \"article.txt\"\n");
return -1;
}

/* read dictionary */
p = dictionary;
p = fgets(p, 100, dict_file);
while (p != 0) {
while (*p != '\0') {
p += 1;
}
p = fgets(p, 100, dict_file);
}

/* read article */
p = article;
bytes_read = fread(p, 1, 1000, article_file);
p += bytes_read;
while (bytes_read != 0) {
bytes_read = fread(p, 1, 1000, article_file);
p += bytes_read;
}
*p = 0;

spellCheck(article, dictionary);
}

项目.C

void spellCheck(char article[], char dictionary[]) {
int len = strlen(article) + 1;
int i;
char* tempArticle;
tempArticle = malloc(len);

if (tempArticle == NULL) {
printf("spellcheck: Memory allocation failed.\n");
return;
}

for(i = 0; i < len; i++)
tempArticle[i] = tolower(article[i]);


i=0;

while (article[i] != '\0'){
if (article[i] >= 33 && article[i] <= 64)
article[i] = ' ';
}

printf("%s", tempArticle);

free(tempArticle);
}

最佳答案

如何组织数据结构很重要。

您可能不仅想像 Zareth 提到的那样将字典放入二叉树中,而且还想对文章做同样的事情,这样您就可以删除所有重复的单词并对它们进行排序。

这样,当您开始在字典中搜索时,如果您超过了单词开头的字母,那么您可以退出,因为字典已排序。

关于C语言拼写检查程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586445/

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