Home > Net >  struct and variable looping C language
struct and variable looping C language

Time:06-04

#include <stdio.h>

struct Car {
  char brand[50];
  char model[50];
  int year;
};

int main() {
  struct Car car1 = {"BMW", "X5", 1999};
  struct Car car2 = {"Ford", "Mustang", 1969};
  struct Car car3 = {"Toyota", "Corolla", 2011};

  printf("%s %s %d\n", car1.brand, car1.model, car1.year);
  printf("%s %s %d\n", car2.brand, car2.model, car2.year);
  printf("%s %s %d\n", car3.brand, car3.model, car3.year);

  return 0;
}

/*
BMW X5 1999
Ford Mustang 1969
Toyota Corolla 2011
*/

Here the struct only has 3 variables (car1, car2, car3). But if it had numerous cars, how could I make this same code (print all values) using a loop?

CodePudding user response:

You need an array of Cars, something like this

#include <stdio.h>

struct Car {
  char brand[50];
  char model[50];
  int year;
};

int main() {
    struct Car cars[] = {
        {"BMW", "X5", 1999},
        {"Ford", "Mustang", 1969},
        {"Toyota", "Corolla", 2011},
        {"Mercedes", "C197", 2010 }
    };

    for(size_t i = 0; i < sizeof(cars)/sizeof(cars[0]);   i) {

        printf("%s %s %d\n", cars[i].brand, cars[i].model, cars[i].year);
    }

    return 0;
}

CodePudding user response:

You need an array of struct Car.

It works pretty much the same as any other array in with the difference that each element now has extra fields, the ones on your struct.

Here is an example:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 100

struct Car {
  char brand[50];
  char model[50];
  int year;
};


int main(void) {
    struct Car cars[SIZE];

    for (int i = 0; i < SIZE; i  ) {
        // Initialize
        strcpy(cars[i].brand, "BMW"); // or any other brand
        strcpy(cars[i].model, "X5");

        cars[i].year = 1999;
    }

    for (int i = 0; i < SIZE; i  ) {
        // Print
        printf("Car %d:\n", i   1);
        printf("%s %s %d\n", cars[i].brand, cars[i].model, cars[i].year);
    }

    return 0;
}
  • Related