2016-12-04 3 views
0

私はgoogleで見つけようとしましたが、何も正確に見つかりませんでした。 まだそれを使用することが理解できないコードブロック上で実行しようとしましたか? PS:プログラミングの新機能[^ n]とは何ですか?(C言語)

+1

あなたは何をしようとしていますか –

+3

行末まで文字列を取得するのに 'scanf'で使用されます。 –

+0

質問を更新して、少なくともこれを含むコード行を表示してください。 '[^ \ n]'それだけで何も意味しません。 –

答えて

3

fscanfファミリーの関数で使用されている書式文字列内のシーケンスはほぼ確実です。わずかに読みやすくするために調整ISO C標準(C11)、から

[は予想文字のセット(スキャンセット)から文字の空でないシーケンスと一致。

変換指定子には、一致する右括弧]までの形式文字列のすべての後続文字が含まれます。

スキャンセットがないがハット間のスキャンリストに表示されないすべての文字が含まれている場合には、ブラケット(スキャンリスト)の間の文字の左括弧の後の文字がハット^でない限り、スキャンセットを構成するには、と右のブラケット

したがって、文字列[^\n]は、改行文字ではない任意の数の文字を意味する変換指定子です。

つまり、%sが空白で止まるので、行末まで文字列を読み取る方法です。したがって、Pax Diabloをあなたの名前として入力する場合は、scanf("%s", buffer)は、scanf("[^\n]", buffer)は入力行全体をPax Diabloとします。

は、が改行自体を読み取らないことに注意してください。これは、次の読み込み操作のために入力ストリームに残されています。

関連する問題