11.構造体

11-2. 代入、複写

◇構造体の代入

まず、始めに構造体メンバへ代入するとき、前回のアクセス方法を用います。

#include<stdio.h>

struct st_samp{
        char *title;
        int      no;
        char  *date;
};

main()
{
        struct st_samp cpro1 = {"C-Production No.", 0, "2001/05/16"};

        cpro1.no = 116; /* ここに注目 */
        
        printf("%s%03d %s\n", cpro1.title, cpro1.no, cpro1.date);

}

/* 結果 
C-Production No.116 2001/05/16
*/

cpro1.no = 116;

この部分が代入しているところです。
配列の要素に代入するような感じで代入していきます。

◇構造体の複写

構造体の場合、(=)イコールの両辺が構造体であった場合は構造体全体を一括して代入することができます。

#include<stdio.h>

struct st_samp{
        char *title;
        int  no;
        char *date;
};

main()
{
        struct st_samp cpro1 = {"C-Production No.", 116, "2001/05/16"},
                       cpro2 = {"C-Production Ex.", 2, "2001/05/20"};

        printf("%s%03d %s\n", cpro1.title, cpro1.no, cpro1.date);
        printf("%s%03d %s\n", cpro2.title, cpro2.no, cpro2.date);

        cpro1 = cpro2; /* 構造体全体をコピー */

        printf("%s%03d %s\n", cpro1.title, cpro1.no, cpro1.date);
        printf("%s%03d %s\n", cpro2.title, cpro2.no, cpro2.date);

}

/* 結果
C-Production No.116 2001/05/16
C-Production Ex.002 2001/05/20
C-Production Ex.002 2001/05/20
C-Production Ex.002 2001/05/20
*/