scanf 関数の変換指定子
当ページのリンクには広告が含まれています。
スポンサーリンク
「数値の入力」で、少し触れた scanf 関数の変換指定子の詳細を紹介します。
scanf 関数の変換指定子
まずは、変換指定子の書式を確認します。
%[代入抑止][最小フィールド幅][修飾子]変換指定子
パーセント「%」からはじまり、さまざまな要素で修飾しながら、最後に変換指定子を指定します。
※ 角括弧[] で記述している部分は省略可能です。例えば[修飾子]など。
代入抑制
代入しない型を指定します。
* | 「*」に続く変換指定子で指定した型は代入を行わない。 |
例えば、こんなんです。
scanf("%*s%d", &var)
この例では、入力「Hello123」であれば、変数「var」には「123」が格納され、「Hello」は格納されません。
修飾子
修飾子は変換指定子を修飾する役割を持っており、以下のようなものがあります。
修飾子 | |
---|---|
h | short型へ変換 |
l | long型へ変換 |
変換指定子
変換指定子の一覧です。
変換指定子 | 概要 |
---|---|
%s | 文字列 |
%d | 10進整数 |
%u | 符号なしの10進整数 |
%i | 8進、10進、16進整数 |
%o | 8進整数 |
%x | 16進整数 |
%f | 実数 |
変換指定子の利用例
変換指定子をサンプルプログラムで確認してみましょう。
#in#include <stdio.h> int main(void) { /* 変数の定義 */ char moji[128]; char mojinomi[128]; float suuchi; /* 文字列 */ printf("文字列 = "); scanf("%s", moji); printf("代入された値 => %s\n\n", moji); /* 文字列のみを代入 */ printf("数値と文字列 = "); scanf("%*d%s", mojinomi); printf("代入された値 => %s\n\n", mojinomi); /* 数値 */ printf("数値 = "); scanf("%f", &suuchi); printf("代入された値 => %f\n", suuchi); }
実行結果です。
文字列 = ABCD 代入された値 => ABCD 数値と文字列 = 123XYZ 代入された値 => XYZ 数値 = 3.141592 代入された値 => 3.141592
このようになります。サンプルプログラムと実行結果と見比べてみてください。