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
このようになります。サンプルプログラムと実行結果と見比べてみてください。