この記事では、C言語のscanf関数
を使って文字列を入力する方法と注意点について解説します。
scanf関数
を使った文字列の入力
C言語において、ユーザーからの入力を受け取る際には、scanf関数
を使用することが一般的です。
scanf関数
は、指定したフォーマットに従って入力を受け取り、変数に格納することができます。
単語の入力
まず、単語を入力する方法を見ていきましょう。
単語とは、空白文字(スペースやタブ)を含まない文字列のことです。
scanf関数
を使って単語を入力する場合は、以下のようなコードを記述します。
#include <stdio.h>
int main() {
char word[100]; // 入力された単語を格納するための配列
printf("単語を入力してください: ");
scanf("%s", word);
printf("入力された単語は %s です\n", word);
return 0;
}
上記のコードでは、char型
の配列word
を用意し、scanf関数
を使って単語を入力しています。
%s
は、文字列を受け取るためのフォーマット指定子です。
scanf関数
は、入力された文字列をword
に格納します。
最後に、入力された単語を表示しています。
文の入力
次に、文(複数の単語からなる文字列)を入力する方法を見ていきましょう。
文を入力する場合も、単語の入力と同様にscanf関数
を使用します。
以下のコードを参考にしてください。
#include <stdio.h>
int main() {
char sentence[100]; // 入力された文を格納するための配列
printf("文を入力してください: ");
scanf("%[^\n]", sentence);
printf("入力された文は %s です\n", sentence);
return 0;
}
上記のコードでは、char型
の配列sentence
を用意し、scanf関数
を使って文を入力しています。
scanf関数
は、入力された文をsentence
に格納します。
最後に、入力された文を表示しています。
空白文字を含む文字列の入力
最後に、空白文字を含む文字列を入力する方法を見ていきましょう。
空白文字を含む文字列を入力する場合は、fgets関数
を使用することが推奨されています。
scanf関数は空白を区切り文字として処理する仕様であるため、Hello World
のように空白を含む文字列をscanf関数で入力する場合は特殊な方法を採用する必要があります。
以下のコードを参考にしてください。
#include <stdio.h>
int main() {
char sentence[100]; // 入力された文字列を格納するための配列
printf("文字列を入力してください: ");
fgets(sentence, sizeof(sentence), stdin);
printf("入力された文字列は %s です\n", sentence);
return 0;
}
上記のコードでは、char型
の配列sentence
を用意し、fgets関数
を使って文字列を入力しています。
sizeof(sentence)
は、sentence
配列のサイズを取得するための演算子です。
stdin
は、標準入力を表すポインタです。
fgets関数
は、入力された文字列をsentence
に格納します。
最後に、入力された文字列を表示しています。