1

私は C を初めて使用します。たとえば、新聞記事のような一連の単語があります。記事内の単語をアルファベット順に別のファイルに保存したいです。圧倒されたい」。

Now in the above example I want to store all the words starting with 'a' to be stored in a file a.txt. in the same way words starting with 'b' to be stored in b.txt

以下の構文を使用していますが、これは機能していません

{
    if(strcmp(wordcheck, worddict)==0)
        fprintf(out_file1 ,"%c", wordcheck); //storing the value in a.txt            
}

別の質問があります。単語のリストを含むテキスト ファイルを取得し、このリストを多数のリスト (既にプログラムに供給されている) と比較したい場合は、入力リスト内の単語が単語と一致するかどうかを意味しますソースリストのいずれかで、単語がlist1.txtで見つかった場合にのみ、その単語をファイルa.txtに保存したい)。同様に、単語が list2.txt にある場合は、b.txt に保存します。それに伴い、ファイル list1.txt のパスを出力ファイル a.txt に表示したいと考えています。Like sing ./dataset/dictionary/verb

以下の構文を使用しました

while(dictcount >= 0)//reads dictionary word into array//
{   
    dictcount = 0; //searches through all of the listed data files
    fscanf(fp1,"%s", worddict);
    fscanf(fp2,"%s", worddict);
    fscanf(fp3,"%s", worddict);
    if(strcmp(wordcheck, worddict)==0)//compare strings//if the word in found in list misc.txt
    {
        fprintf(out_file1 ,"%c", wordcheck); //storing the value in output_misc.txt
        if (getcwd(cwd, sizeof(cwd)) != NULL) {
            //fprintf(out_file3, "%c\n", cwd); //stores the path of the folder containing the list in which the matched 'word' is found  
            return 0;
        }
    }
}
4

1 に答える 1

0

strcmp()は、関心のある部分だけでなく、文字列全体を比較します。その'abcdef'ため、 とは等しくなりません'a'が、を使用strncmp()して 1 バイトのみを比較するように指示した場合は、必要な処理が行われます。

しかし、あなたは1バイトしか比較していないので、なぜこれをしないのですか:

...
store_words(out_file, words, n_words, 'a');
...
void store_words(FILE *out_file, char *words, int n_words. char starter) {
    int i;
    for(i=0; i < n_words; i++) {
        if(words[i][0] == starter) { // check if the first character is 'a' */
            fprintf(out_file ,words[i]); //if so storing the value in a.txt            
        }
    }
}

そして、アルファベットのすべての文字をループしますか? C は 'a' と 'A' が異なると考えていますが、これは a で修正できることに注意してくださいtolower()

于 2012-12-05T19:41:48.303 に答える