0

Cプログラミング言語では、scanf()関数はキーボードの文字または数字から読み取りますか?

たとえば、フォーマットがで、または%dと書いた場合、 は整数のみを読み取り、他の文字は無視しますか?"1""a"scanf()

scanf()キーボードから文字を読み取り、文字をフォーマットで指定されたデータ型に変換する本を読んだことがあります。

誰か説明してくれませんか。前もって感謝します。

4

5 に答える 5

0

scanf() reads charcters from標準入力, and then converts the characters into data types specified by formats.?

scanfの man ページがこれに明確に答えています。

The scanf() family of functions scans input according to format as described 
below. This format may contain conversion specifications; the results from such
conversions, if any, are stored in the locations pointed to by the pointer 
arguments that follow format. Each pointer argument must be of a type that is 
appropriate for the value returned by the corresponding conversion specification. 
于 2013-11-10T10:39:25.130 に答える
0

プロンプト(cmd、ターミナルなど)環境でのプログラムとの通信のインフラストラクチャの詳細について疑問に思っていると思います。次のようなコードを書くと:

int x;
scanf("%d", &x);

コンパイルして実行すると、プログラムは停止し、またはscanfなどの下線付きの環境に何かが入力されるのを待ちます。あなたまたはあなたのユーザーがキーボードから何かを入力し始めると、プログラムはおそらくバッファリングを何もしません。しかし、Enter キーを押すと、プログラムは文字 (空白まで) を取得し、それらを整数である目的の変数型に変換しようとします。関数パラメーターでそう言ったからです。この言及された変換は暗黙的に行われます。あなたが書いた場合:cmdterminalscanf

char str[20];
scanf("%s", str);

キーボードからいくつかのキーを入力すると、下線付きの変換の動作が異なります。要約すると、ロジックは単純です。変数intを定義すると、プログラムはintに変換しようとします。floatを定義すると、プログラムはfloatに変換しようとします。しかし、入力されたすべてのキーは文字列に由来し、これはstringと呼ばれます。scanfの使い方を読ん で手放すことをお勧めします。

于 2013-11-10T11:14:01.377 に答える