文字列内の特定の単語を検索するコードを作成しようとしましたが、文字列内の場所を数えます。 文字列内に単語が存在しない場合は、単語が見つからなかったことを表示する必要があります。 例えば、for文3ワードカウンタのコードをスキップ
int count=0,i=0,j=0,k;
char word[30];
getchar();
gets(word);
k=strlen(word);
while(arr[i]!='\0'){
if(arr[i]==word[j]){
i++;
j++;
}
i++;
if(arr[i]==' ') // moves across a word in the string
count++; // count a word the index has passed
}
if(j==k) // if all letters were a match
printf("The word %s is placed in the %d place." , word , count);
else
printf("The word %s is not found." , word);
}
問題は、すべての文章が入力されたため、それが印刷さということであるべきである「遅」の結果のために、「私は遅れています」:
単語%sが見つかりません。
私はそれが何らかの理由で最初の部分をスキップし、ストレートword is not found
に入ることを想定し、それでもデバッグの後、私はそれがスキップなぜ瞬間とその理由をキャッチできませんでした。
ようこそスタックオーバーフロー! ['gets()'を使わないで、危険です。](http://stackoverflow.com/q/1694036/2173917)。代わりに['fgets()'](https://linux.die.net/man/3/fgets)を使用してください。 –
'word'の文字が' arr'の文字に現れるなら、あなたのコードはテストされているようですが、必ずしも連続している必要はありません。それはあなたが望むものではないので、あなたのコードに他のバグがあるのに加えて、基本的なロジックエラーがあります。コードに内部ループがないようです。あるいは、 'strtok()'を使ってスペースを分割し、 'strtok()'から返された文字列を 'strcmp()'を使って目的の単語と比較することができます。また@SouravGhoshの警告 –
デバッガを使ってステップスルー – pm100