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関数 - スキャン集合」についてみていきます。