4

こんにちは、私はコードを書いています

char sentence[100]; 
scanf("%s" ,sentence); 
char * ptrs = sentence ;
printf("%d", strlen(ptrs));

私が入ったとします。

john is a boy

関数は値4を与えていstrlen()ます。スペースの後にカウントを停止します。どうすればよいですか

4

3 に答える 3

9

その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;
}
于 2011-10-10T08:25:15.327 に答える
1
scanf("%s" ,sentence);

これは、次のスペースまでの文字列のみを読み取ります。つまり、残りの文字、したがって john の後の単語は読み取られません。

目的の出力を取得するには、代わりに gets() を使用してください。

gets(sentence);
于 2011-10-10T08:26:24.000 に答える
1

scanf() の代わりに fgets()。
scanf() は、入力を単語の最後まで受け取ります。

デバッグのヒント:

自分である程度デバッグできたはずです。strlen() が正しい答えを出していない場合、最初にすべきことは、仮定を検証することです。あなたは、文/ptrsが正しい値を持っていると仮定していました。単純な printf は、それが間違っていることを証明していたでしょう。

于 2011-10-10T08:44:38.330 に答える