0

C プログラミング コースで C の演習を行っています。テキスト ファイルからリンクされたリストにデータを読み取り、一致するものを探してから、結果を出力する必要があります。

テキストファイルの例:

"Apple/Orange",1
"Banana/Watermelon/Lemon",2
"Watermelon/Strawberry",3
"Orange/Grape/Watermelon",4
"Blueberry", 5

fgets()、sscanf()、および void 関数を使用してリンク リストに格納したため、文字列は引用符で始まります。

問題は、strncmp() を使用して文字列から単語を検索しようとしたときに、引用符が原因で機能しなかったことです。

私は次のようなことをしました:

void findFruits(List *list){

Node *position = list->first;
while(position != NULL){
    if(strncmp(position->fruits, "Watermelon", 10)==0){
        printf("%s, %d\n", position->fruits, position->number); 
    }
    position = position->next;
}

文字通り、引用符で始まる文字列から正確な単語を見つける手がかりがありません。助けていただければ幸いです。

Barmarのアイデアのおかげで、今解決しました。strncmp() の代わりに strstr() を使用しようとすると、完全に機能しました。

if(strstr(position->fruits, "Watermelon")){
    printf("%s, %d\n", position->fruits, position->number); 
    }
4

1 に答える 1

0

Watermelonたとえば、文字列内の単一の果物の単語を検索する場合、Banana/Watermelon/Lemonこれらの 2 つの文字列を比較することはできませんが、文字列をこの区切り記号で分割し、/2 つの区切り記号の間で単語を比較する必要があります。または、果物の 1 文字を文字列と比較できます。

于 2016-11-03T20:21:18.863 に答える