2017-02-21 5 views
-1
if(notfound == 1) 
{ 
    int len = strlen(word); 
    //if(strcmp(word, array)== 0) 
    if(strcmp(array3,word)==0) 
    { 
     word[len - 1] = '\0'; 
    } 
    if(strcmp(word, array2) ==0) 
    { 
     word[len - 1] = '\0'; 
    } 

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

これは、スペルチェックプログラムのコードです。少なくとも、私の問題の大半を占めています。私のプログラムは、それをDicitonaryと比較することによって、あらゆるテキストファイルのスペルチェックをうまく行っています。このコードの単語は、テキストファイルの間違った単語を含む配列のままです。配列3は、句読点を含む単語の配列で、次のようになります。char* array3[] = {"a.", "b.", "c.", "d.", "e.", "f.", "g.", "h."};この配列と単語を比較して句読点を削除します(この場合はドットですが、後で残りの句読点を計画します)。問題は、配列が "。"、 "、"、 "!"、 "?"、 ";"のように見える場合、strcmpはそれをスキップして句読点を取り除かないことです。私の方法はとてもシンプルで、本当に適切ではないことが分かっていますが、私が "c。"で試してみると、それは機能していました。プラス、私はC言語Cのスペルチェックプログラムで句読点を削除するにはどうすればよいですか?

ayoneは助けることができた場合に非常に新しいです、私は本当に私は本当に週間、この問題で立ち往生していますだって今

+1

コードのインデントを開始してください。 –

+1

変数 'array3'ではなく、' punctuations'のような重要な名前を呼んでください。 –

+2

コードがあまりにも少ないので、ここで何が間違っているのかを見つける方法はありません。しかし、 'strcmp(array3、word)'は不気味です。コンパイラの警告をオンにし、警告をエラーとして扱います。 –

答えて

0

word配列は、単一の末尾を持っている可能性がある場合、ことを理解するであろうその文字はstrcspnを使用して削除できます。
アレイに複数の句読点がある場合は、ループ内で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)] = '\0'; 
    printf ("%s\n", word); 

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

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

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

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

    strcpy (word, "semicolon;"); 
    printf ("%s\n", word); 
    word[strcspn (word, punctuation)] = '\0'; 
    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); 
} 
関連する問題