【C言語】scanf関数を使って配列に値を入力する方法を解説

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

目次から探す

配列に値を入力する方法

配列は、複数のデータをまとめて扱うためのデータ構造です。

C言語では、配列に値を入力するためにいくつかの方法があります。

配列の宣言と初期化

配列を使用する前に、まず配列の宣言と初期化を行う必要があります。

配列の宣言は、以下のように行います。

データ型 配列名[要素数];

たとえば、整数型の要素を5つ持つ配列を宣言する場合は、次のようになります。

int numbers[5];

配列の初期化は、宣言と同時に行うこともできます。

初期化する値を指定するには、中括弧{}を使用します。

int numbers[5] = {1, 2, 3, 4, 5};

scanf関数を使った配列への値の入力方法

scanf関数を使うと、ユーザーからの入力を受け取り、配列に値を格納することができます。

scanf関数は、以下のように使用します。

scanf("書式指定子", &変数);

配列に値を入力する場合は、配列の要素ごとにscanf関数を呼び出します。

たとえば、整数型の要素を持つ配列に値を入力する場合は、次のようになります。

for (int i = 0; i < 要素数; i++) {
    scanf("%d", &配列名[i]);
}

複数の値を一度に入力する方法

scanf関数を使って、複数の値を一度に入力することもできます。

複数の値を入力する場合は、scanf関数の書式指定子にスペースや改行を含めて指定します。

scanf("書式指定子1 書式指定子2 ...", &変数1, &変数2, ...);

たとえば、整数型の要素を持つ配列に複数の値を入力する場合は、次のようになります。

for (int i = 0; i < 要素数; i++) {
    scanf("%d", &配列名[i]);
}

注意点とエラーハンドリング

配列に値を入力する際には、いくつかの注意点とエラーハンドリングが必要です。

以下にその一部を紹介します。

入力値の制限とエラーチェック

scanf関数は、指定した書式指定子に合致する入力値を受け取ります。

しかし、ユーザーが予期しない入力を行った場合には、予期せぬ結果が生じる可能性があります。

そのため、入力値の制限やエラーチェックを行うことが重要です。

たとえば、整数型の要素を持つ配列に整数以外の値が入力された場合、予期せぬ結果が生じる可能性があります。

そのため、scanf関数の戻り値を確認し、入力が成功したかどうかを判断することが重要です。

バッファオーバーフローの防止

scanf関数は、指定した変数に入力値を格納する際に、その変数のサイズを超える入力が行われるとバッファオーバーフローが発生します。

バッファオーバーフローは、プログラムの安定性やセキュリティに悪影響を及ぼす可能性があるため、注意が必要です。

バッファオーバーフローを防ぐためには、scanf関数の書式指定子に最大文字数を指定することが有効です。

たとえば、文字列を格納する配列には、最大文字数を指定することでバッファオーバーフローを防ぐことができます。

目次から探す