【C言語】scanfで文字列を入力する方法を解説

この記事では、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関数を使って文を入力しています。

%sは、文字列入力用に使用できるフォーマット指定子です。

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に格納します。

最後に、入力された文字列を表示しています。

1 2
目次から探す