next up previous contents
Next: 20.7 課題 20 Up: 20. 構造体 II Previous: 20.5 標準関数 strcpy()

20.6 複数の変数への読み込み

標準入力から以下のように入力された場合にはどのようにすれば良いであろうか。

kanayama 70 65

C言語では scanf() という関数を用いなければならないが、C++の 入力読み込みの機能を使うと以下のように簡単に実現できる。

例 10
    char name[100];
    int  zenki, kouki;
    ...
    cin >> name >> zenki >> kouki;

従って、先の学生の成績ならば、次のようなデータがあったとき、

kanayama 70 65
yamada 80 90
hokusei 60 60
suzuki 65 70

次のプログラムで、名前、前期の成績、後期の成績として読み込むことが出来る。

例 11
    #include <stdio.h>
    #include <string.h>
    struct Test {
        char name[30];
        int zenki;
        int kouki;
    };
    main(){
        struct Test g[100]; /* 一応、100人分 */
        char buf[256];
        int  i=0, j;

        while (cin >> g[i].name >> g[i].zenki >> g[i].kouki ){
            i++;
        }

        for (j=0; j<i; j++){
            cout << g[j].name   << "," 
                 << g[j].zenki  << "," 
                 << g[j].kouki  << endl;
        }
    }

上のプログラムでは、メンバー name[] が配列なので、 g[i].name はアドレスになっている点に注意しよう。



Noriyo Kanayama