2017-02-21 14 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을 사용하여 제거 할 수 있습니다.
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)] = '\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); 
}