C 言語におけるユーザー入力の読み取り

CBeginner
オンラインで実践に進む

はじめに

この実験では、scanf() 関数を使って C プログラミング言語でユーザー入力を読み取る方法を学びます。scanf() 関数は、ユーザーからの入力を読み取るための強力なツールであり、標準入出力ライブラリ stdio.h に定義されています。C は、さまざまなデータ型をサポートする強力な型付き言語です。この実験全体を通して、ユーザー入力を読み取り表示するために、char 型と int 型のデータ型を使用することに焦点を当てます。

開発環境をセットアップする

このステップでは、開発環境をセットアップし、プログラム用の新しい C ファイルを作成します。

  1. WebIDE でターミナルを開きます。デフォルトでは /home/labex/project ディレクトリにいるはずです。もし確認ができない場合は、現在の場所を確認するために pwd(現在の作業ディレクトリを表示)を入力してください。

  2. 以下のコマンドを使用して、user_input.c という名前の新しいファイルを作成します。

    touch user_input.c

    touch コマンドは、ファイルが存在しない場合には新しい空のファイルを作成し、既存のファイルの場合にはタイムスタンプを更新します。

  3. WebIDE エディタで user_input.c ファイルを開きます。これは、WebIDE の左側のファイルエクスプローラーでファイル名をクリックするか、ファイル メニューの ファイルを開く オプションを使用することで行えます。

基本的なプログラム構造を書く

このステップでは、C プログラムの基本構造を書きます。

  1. user_input.c ファイルに、以下のコードを追加します。

    #include <stdio.h>
    
    int main() {
        // ここにコードを追加します
        return 0;
    }

    これを分解してみましょう。

    • #include <stdio.h> は、コンパイラに標準入出力ライブラリを含めるように指示します。このライブラリには、入出力に使用する printf()scanf() のような関数が含まれています。
    • int main() は、プログラムが実行を開始するメイン関数です。すべての C プログラムにはメイン関数が必要です。
    • 波括弧 { } は、メイン関数の本体を定義します。
    • メインの末尾の return 0; は、プログラムが正常に実行されたことを示します。
  2. ファイルを保存します。これは、Ctrl+S を押すか、ファイル メニューから 保存 を選択することで行えます。

名前のためのユーザー入力を実装する

さて、ユーザーの名前を読み取る機能を実装しましょう。

  1. user_input.c ファイルを変更して、main() 関数の中に以下のコードを追加します。

    #include <stdio.h>
    
    int main() {
        char name[100];
    
        printf("Enter your name: ");
        scanf("%s", name);
    
        printf("Hello, %s!\n", name);
    
        return 0;
    }

    新しい各行の機能は以下の通りです。

    • char name[100]; は、最大 99 文字とヌル終端文字を含むことができる文字配列(文字列)を宣言します。
    • printf("Enter your name: "); は、ユーザーに名前を入力するように促します。
    • scanf("%s", name); は、ユーザー入力から文字列を読み取り、name 配列に格納します。%s フォーマット指定子は文字列を読み取るために使用されます。
    • printf("Hello, %s!\n", name); は、ユーザーが入力した名前を使って挨拶を表示します。フォーマット文字列の %s は、name の値に置き換えられます。
  2. ファイルを保存します。

年齢入力を追加する

さて、プログラムを拡張して、ユーザーの年齢も尋ねるようにしましょう。

  1. user_input.c ファイルを変更して、年齢入力を追加します。

    #include <stdio.h>
    
    int main() {
        char name[100];
        int age;
    
        printf("Enter your name: ");
        scanf("%s", name);
    
        printf("Enter your age: ");
        scanf("%d", &age);
    
        printf("Hello, %s! You are %d years old.\n", name, age);
    
        return 0;
    }

    ここで新しく追加された部分は以下の通りです。

    • int age; は、ユーザーの年齢を格納するための整数型変数を宣言します。
    • 年齢を尋ねるために、もう一組の printf()scanf() を追加しました。
    • scanf("%d", &age); は、ユーザー入力から整数を読み取ります。%d フォーマット指定子は整数用に使用されます。age の前にある & に注意してください。これは、scanf() に入力を格納するために変数のメモリアドレスが必要だからです。
    • 最後の printf() は、出力メッセージに年齢を含めるようになっています。
  2. ファイルを保存します。

プログラムをコンパイルして実行する

この最後のステップでは、C プログラムをコンパイルして実行し、結果を確認します。

  1. ターミナルで、user_input.c ファイルが含まれるディレクトリに移動します。

    cd /home/labex/project

    このステップでは、正しいディレクトリにいることを確認します。すでにそこにいる場合は、「cd: no such file or directory」というメッセージが表示されますが、これは無視して構いません。

  2. GCC コンパイラを使用してプログラムをコンパイルします。

    gcc user_input.c -o user_input

    このコマンドは、GCC に user_input.c をコンパイルして、user_input という名前の実行可能ファイルを作成するように指示します。コードにエラーがある場合は、ここにエラーメッセージが表示されます。その場合は、コードに戻り、エラーを修正してから再度コンパイルしてみてください。

  3. コンパイル済みのプログラムを実行します。

    ./user_input

    ./ は、シェルに対して現在のディレクトリからプログラムを探すように指示します。

Terminal compiling C program
  1. プログラムは、名前と年齢を入力するように促します。回答を入力し、各入力の後に Enter キーを押します。

  2. 名前と年齢が含まれた個別化された挨拶メッセージが表示されるはずです。

問題がある場合は、コードの誤字を再度確認し、コンパイルする前にすべての変更を保存していることを確認してください。

まとめ

この実験では、scanf() 関数を使って C 言語でユーザー入力を読み取る方法を学びました。ユーザーに名前と年齢を尋ね、入力を読み取り、個別化された挨拶メッセージを表示するプログラムを作成しました。この演習を通じて、C 言語の基本的な入出力操作、異なるデータ型(文字列用の char 配列と整数用の int)の扱い、および C プログラムのコンパイルと実行のプロセスについて学ぶことができました。

主な要点:

  1. scanf() 関数は、ユーザーからの入力を読み取るために使用されます。
  2. 読み取る入力の種類に応じて、異なるフォーマット指定子(文字列用の %s、整数用の %d)が使用されます。
  3. scanf() を使って整数やその他の非文字列型を読み取る場合、変数のアドレスを渡すために & 演算子を使用する必要があります。
  4. コンパイルプロセスによって C コードが実行可能なプログラムに変換されます。

これらの基本的なスキルは、より複雑な C プログラミングタスクの基礎を形成し、プログラミング能力を学び続ける上で役立ちます。忘れないでください、プログラミングにおいては練習が大切です。このプログラムを修正したり、新しいプログラムを作成して学んだことを強化してみてください!