NaaN日記

やったこと、覚えたことを発信する場

構造体を配列にする(C)

構造体は配列にもできる
#include <stdio.h>
#include <string.h>

typedef struct{
    int age;
    char animal[10];
}animals;

int main(void){
    int i;

    animals data[3];//配列として宣言

    data[0].age = 3;
    strcpy(data[0].animal, "いぬ");
    data[1].age = 4;
    strcpy(data[1].animal, "ねこ");
    data[2].age = 5;
    strcpy(data[2].animal, "インコ");
    for(i=0; i<3; i++){
        printf("年齢:%d\n", data[i].age);
        printf("種類:%s\n", data[i].animal);
    }
  
    return 0;
}
/*出力結果
年齢:3
種類:いぬ
年齢:4
種類:ねこ
年齢:5
種類:インコ
*/
勿論引数にも入れられる
#include <stdio.h>
#include <string.h>

typedef struct{
    char animal[64];
    int age;
} animals;

void animals_print(animals data[]);

int main(void)
{
    animals data[3];

    data[0].age = 3;
    strcpy(data[0].animal, "いぬ");
    data[1].age = 4;
    strcpy(data[1].animal, "ねこ");
    data[2].age = 5;
    strcpy(data[2].animal, "インコ");

    animals_print(data);

    return 0;
}

void animals_print(animals data[]){
    int i;

    for(i=0;i<3;i++){
        printf("種類:%s\n", data[i].animal);
        printf("年齢:%d\n", data[i].age);
    }
}

/*出力結果
種類:いぬ
年齢:3歳
種類:ねこ
年齢:4歳
種類:インコ
年齢:5歳
*/