【C言語】scanf関数で空白を入力する方法

この記事では、C言語のscanf関数を使って空白を含む文字列を入力する方法について解説します。

目次から探す

scanf関数の仕様

C言語において、ユーザーからの入力を受け取る際には、scanf関数を使用します。

scanf関数は、指定した書式に従って入力を受け取り、変数に格納する役割を持っています。

しかし、scanf関数はデフォルトでは空白文字(スペース、タブ、改行)を区切り文字として扱います。

つまり、空白文字が入力されると、それ以降の入力は別の変数に格納されることになります。

空白を含む文字列の入力方法

もし、ユーザーからの入力に空白文字を含む文字列を受け取りたい場合、scanf関数の書式指定子には %s ではなく、 %[^\n] を使用する必要があります。

以下に、具体的なコード例を示します。

#include <stdio.h>
int main() {
    char str[100];
    printf("文字列を入力してください:");
    scanf("%[^\n]", str);
    printf("入力された文字列は:%s\n", str);
    return 0;
}

上記のコードでは、まず文字列を格納するための配列 str を宣言しています。

次に、ユーザーに対して文字列の入力を促すメッセージを表示し、scanf関数を使用して入力を受け取っています。

ここで、書式指定子 %[^\n] を使用していることに注目してください。

この書式指定子は、改行文字(\n)以外の全ての文字を受け取ることを意味しています。

つまり、空白文字を含む文字列を正しく受け取ることができ、Hello World !のような文字列も入力できるようになります。

最後に、入力された文字列を表示してプログラムを終了します。

実際に上記のコードを実行してみると、空白文字を含む文字列を正しく受け取ることができることが確認できるでしょう。

目次から探す