今日の人気記事

  1. 配列に格納した数値を昇順ソートする
  2. while文 - 繰り返し処理
  3. continue文 - ループをスキップ
  4. int main(void) - プログラムの基本
  5. コンパイルと実行 - GNU Compiler Collection(gcc) - Linux環境

scanf 関数の変換指定子

当ページのリンクには広告が含まれています。

スポンサーリンク

数値の入力」で、少し触れた scanf 関数の変換指定子の詳細を紹介します。

scanf 関数の変換指定子

まずは、変換指定子の書式を確認します。

%[代入抑止][最小フィールド幅][修飾子]変換指定子

パーセント「%」からはじまり、さまざまな要素で修飾しながら、最後に変換指定子を指定します。

※ 角括弧[] で記述している部分は省略可能です。例えば[修飾子]など。

代入抑制

代入しない型を指定します。

*「*」に続く変換指定子で指定した型は代入を行わない。

例えば、こんなんです。

scanf("%*s%d", &var)

この例では、入力「Hello123」であれば、変数「var」には「123」が格納され、「Hello」は格納されません。

修飾子

修飾子は変換指定子を修飾する役割を持っており、以下のようなものがあります。

修飾子
hshort型へ変換
llong型へ変換

変換指定子

変換指定子の一覧です。

変換指定子概要
%s文字列
%d10進整数
%u符号なしの10進整数
%i8進、10進、16進整数
%o8進整数
%x16進整数
%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

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

基本構文 の人気記事

  1. printf関数の変換指定子
  2. int main(void) - プログラムの基本
  3. 変数の値を出力 - printf 関数
  4. while文 - 繰り返し処理
  5. 条件演算子(3項演算子)「? :」
  6. continue文 - ループをスキップ
  7. 関数のプロトタイプ宣言
  8. (前置・後置)インクリメント演算子, ++
  9. 数値の桁揃え
  10. else if文 - 複数の条件式 - 条件分岐

関連記事(一部広告含む)