こんにちは、私はコードを書いています
char sentence[100];
scanf("%s" ,sentence);
char * ptrs = sentence ;
printf("%d", strlen(ptrs));
私が入ったとします。
john is a boy
関数は値4を与えていstrlen()
ます。スペースの後にカウントを停止します。どうすればよいですか
そのscanfは1つの単語だけを読み取ります.aを実行すると、printf
それが表示されます. したがって、何も問題はありませんstrlen
。
fgets
行全体を読み取る使用:
if (! fgets(sentence, sizeof(sentence), stdin)) {
fprintf(stderr, "error or end of file while no characters have been read\n");
return;
}
scanf("%s" ,sentence);
これは、次のスペースまでの文字列のみを読み取ります。つまり、残りの文字、したがって john の後の単語は読み取られません。
目的の出力を取得するには、代わりに gets() を使用してください。
gets(sentence);
scanf() の代わりに fgets()。
scanf() は、入力を単語の最後まで受け取ります。
デバッグのヒント:
自分である程度デバッグできたはずです。strlen() が正しい答えを出していない場合、最初にすべきことは、仮定を検証することです。あなたは、文/ptrsが正しい値を持っていると仮定していました。単純な printf は、それが間違っていることを証明していたでしょう。