今日の人気記事

  1. 10進数を2進数に変換する

  2. 円の面積と円周の長さを計算する

  3. 2進数を10進数に変換する

  4. 入力した自然数の約数を求める

  5. 入力した文字列の文字数を表示する(出力)

scanf関数を使った文字列入力の注意点 - ホワイトスペース

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

スポンサーリンク

前回は「キーボードから入力した文字/文字列を配列に」を紹介しました。

ここでは scanf関数を使ってキーボードから文字入力した場合の注意点を紹介します。

scanf関数を使った文字列入力の注意点

次のプログラムを実行し

#include <stdio.h>

int main(void)
{
  /* 変数の定義 */
  char moji[1000];

  /* 文字列の入力 */
  printf("文字列を入力してください。\n");
  scanf("%s", moji);

  /* 文字列の出力 */
  printf("%s\n", moji);

  return 0;
}

「Hello, World!」という文字列を入力してみましょう。

すると、次のような実行結果になります。

文字列を入力してください。
Hello, World!
Hello,

「Hello, World!」と入力したにも関わらず……出力される文字列は「Hello,」のみになります。

ホワイトスペース

これは入力した文字列に半角スペースなどの「ホワイトスペース」があるとそれ以降の文字は取り込まれない!

ということが原因になります。

つまり変数「moji」に格納されている文字列は「Hello, World!」ではなく……「Hello,」のみということになります。

このように scanf関数の変換子「%s」ではホワイトスペースを含む文字列は適切に格納されないので注意しましょう。

次は「scanf関数 - スキャン集合」についてみていきます。

基本構文 の人気記事

  1. printf関数の変換指定子

  2. 配列の要素を出力(表示)する

  3. #include <stdio.h> と printf 関数 - プログラムの基本

  4. 変数 - 予約語

  5. 数学関数と数学定数 - math.h

  6. キーボードから入力した文字/文字列を配列に

  7. scanf 関数の変換指定子

  8. (前置・後置)インクリメント演算子, ++

  9. else if文 - 複数の条件式 - 条件分岐

  10. アドレス演算子 - 変数が格納された場所

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