Cプログラミング言語では、scanf()
関数はキーボードの文字または数字から読み取りますか?
たとえば、フォーマットがで、または%d
と書いた場合、 は整数のみを読み取り、他の文字は無視しますか?"1"
"a"
scanf()
scanf()
キーボードから文字を読み取り、文字をフォーマットで指定されたデータ型に変換する本を読んだことがあります。
誰か説明してくれませんか。前もって感謝します。
Cプログラミング言語では、scanf()
関数はキーボードの文字または数字から読み取りますか?
たとえば、フォーマットがで、または%d
と書いた場合、 は整数のみを読み取り、他の文字は無視しますか?"1"
"a"
scanf()
scanf()
キーボードから文字を読み取り、文字をフォーマットで指定されたデータ型に変換する本を読んだことがあります。
誰か説明してくれませんか。前もって感謝します。
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.
プロンプト(cmd、ターミナルなど)環境でのプログラムとの通信のインフラストラクチャの詳細について疑問に思っていると思います。次のようなコードを書くと:
int x;
scanf("%d", &x);
コンパイルして実行すると、プログラムは停止し、またはscanf
などの下線付きの環境に何かが入力されるのを待ちます。あなたまたはあなたのユーザーがキーボードから何かを入力し始めると、プログラムはおそらくバッファリングを何もしません。しかし、Enter キーを押すと、プログラムは文字 (空白まで) を取得し、それらを整数である目的の変数型に変換しようとします。関数パラメーターでそう言ったからです。この言及された変換は暗黙的に行われます。あなたが書いた場合:cmd
terminal
scanf
char str[20];
scanf("%s", str);
キーボードからいくつかのキーを入力すると、下線付きの変換の動作が異なります。要約すると、ロジックは単純です。変数intを定義すると、プログラムはintに変換しようとします。floatを定義すると、プログラムはfloatに変換しようとします。しかし、入力されたすべてのキーは文字列に由来し、これはstringと呼ばれます。scanfの使い方を読ん で手放すことをお勧めします。