C语言实现英文文章单词拼写检查
C语言实现英文文章单词拼写检查
本程序利用给定的单词索引表对英文文章进行单词拼写检查,并将错误单词输出到文件中。
程序功能
- 读取单词索引表文件
index.txt,并将单词存储到数组中。 - 读取英文文章文件
in.txt,识别其中的单词。 - 逐个检查单词是否在索引表中,大小写不敏感。
- 将错误单词(转换为小写)输出到文件
error.txt中,每个单词独占一行,并按字典序排序。
代码实现
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_WORD_LEN 50
#define MAX_WORDS 1000
int main() {
char index[MAX_WORDS][MAX_WORD_LEN+1]; // 单词索引表
int num_words = 0; // 单词个数
FILE* index_file = fopen('index.txt', 'r');
if (index_file == NULL) {
printf('无法打开索引文件\n');
return 1;
}
// 读取单词索引表
while (fgets(index[num_words], MAX_WORD_LEN+1, index_file) != NULL) {
// 去掉换行符
index[num_words][strcspn(index[num_words], '\n')] = '\0';
num_words++;
}
fclose(index_file);
char word[MAX_WORD_LEN+1]; // 当前单词
int word_len = 0; // 当前单词长度
char c; // 当前字符
FILE* in_file = fopen('in.txt', 'r');
if (in_file == NULL) {
printf('无法打开输入文件\n');
return 1;
}
FILE* error_file = fopen('error.txt', 'w');
if (error_file == NULL) {
printf('无法打开输出文件\n');
return 1;
}
// 读取输入文件中的单词,并逐个检查是否在单词索引表中
while ((c = fgetc(in_file)) != EOF) {
if (isalpha(c)) {
if (word_len < MAX_WORD_LEN) {
word[word_len++] = tolower(c);
}
} else {
if (word_len > 0) {
// 当前单词结束,检查是否在单词索引表中
word[word_len] = '\0';
int found = 0;
for (int i = 0; i < num_words; i++) {
if (strcmp(word, index[i]) == 0) {
found = 1;
break;
}
}
if (!found) {
fprintf(error_file, '%s\n', word);
}
word_len = 0;
}
}
}
fclose(in_file);
fclose(error_file);
return 0;
}
使用方法
- 将单词索引表保存到文件
index.txt中,每个单词占一行,按字典序排序。 - 将待检查的英文文章保存到文件
in.txt中。 - 编译并运行程序。
- 程序将在
error.txt文件中输出错误单词列表。
注意事项
- 程序假设
index.txt中的单词数量不超过1000个,每个单词长度不超过50个字母。 - 程序会将所有错误单词转换为小写输出。
- 程序不会对文章进行语法或语义分析,仅进行单词拼写检查。
原文地址: https://www.cveoy.top/t/topic/gmBV 著作权归作者所有。请勿转载和采集!