この記事では、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]
を使用していることに注目してください。
つまり、空白文字を含む文字列を正しく受け取ることができ、Hello World !
のような文字列も入力できるようになります。
最後に、入力された文字列を表示してプログラムを終了します。
実際に上記のコードを実行してみると、空白文字を含む文字列を正しく受け取ることができることが確認できるでしょう。