如何摆脱 c 拼写检查程序中的标点符号?

How to get rid off of the punctuation in c spellchecking program?

if(notfound == 1)
{
    int len = strlen(word);
    //if(strcmp(word, array)== 0)
    if(strcmp(array3,word)==0)
    {
        word[len - 1] = '[=10=]';
    }
    if(strcmp(word, array2) ==0)
    {
        word[len - 1] = '[=10=]';
    }

    fprintf(NewFile,"%s\n", word);
}

这是我的拼写检查程序代码,至少是给我带来大部分问题的部分。我的程序通过与 Dicitonary 进行比较,可以很好地检查任何文本文件的拼写。此代码中的单词保留为包含文本文件中错误单词的数组。数组 3 是包含标点符号的单词数组,如下所示: char* array3[] = {"a.", "b.", "c.", "d.", "e.", "f.", "g.", "h."}; 我尝试将单词与该数组进行比较以去除标点符号(在本例中为点,但后来我计划使用其余的标点符号照顾)。问题是,如果我的数组看起来像“.”、“,”、“!”、“?”、“;”,strcmp 只是跳过它,并没有去掉标点符号。而且我知道我的方法非常简单而且不太合适,但是当我用 "c." 尝试它时,它起作用了。加上我对c语言很陌生

如果有人能提供帮助,我将不胜感激,因为我已经被这个问题困了一个星期了

如果 word 数组可能有一个尾随标点符号,可以使用 strcspn.
删除该字符 如果 word 数组在数组中有多个标点符号,可以在循环中使用 strpbrk 替换这些字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char word[100] = "";
    char punctuation[] = ",.!?;";
    char *temp = NULL;

    strcpy ( word, "text");//no punctuation
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    strcpy ( word, "comma,");
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    strcpy ( word, "period.");
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    strcpy ( word, "exclamation!");
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    strcpy ( word, "question?");
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    strcpy ( word, "semicolon;");
    printf ( "%s\n", word);
    word[strcspn ( word, punctuation)] = '[=10=]';
    printf ( "%s\n", word);

    temp = word;
    strcpy ( word, "comma, period. exclamation! question? semicolon;");
    printf ( "%s\n", word);
    while ( ( temp = strpbrk ( temp, punctuation))) {//loop while punctuation is found
        *temp = ' ';//replace punctuation with space
    }
    printf ( "%s\n", word);

    return(0);
}