我是C編程的初學者。我試圖學習如何編寫一個拼寫檢查器來查看字典文件中的所有單詞,將它們與文章進行比較,將字典文件中不存在的所有單詞打印到控制檯上。由於我在課堂上學習malloc,因此我已經降低了每個單詞,刪除了文章中的所有標點符號,並將字符串複製到malloc中。我不知道下一步應該怎麼做,有人會給我一個提示嗎?由於檢查拼寫檢查程序C
MAIN.C
#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);
}
PROJECT.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);
}
發表了一些代碼。你用你的代碼得到了多少? – 2009-10-19 00:39:49
這裏「將它們複製到malloc」是什麼意思?正如Andrew Keith指出的那樣,實際的C代碼會更容易理解。 – 2009-10-19 00:48:27
剛發佈我到目前爲止 – user133466 2009-10-19 00:57:35