Tableau des structures en C

Satishkumar Bharadwaj 12 octobre 2023
  1. Tableau de struct en C
  2. Créer un tableau de struct en utilisant la fonction malloc() en C
Tableau des structures en C

Ce tutoriel présente la manière de créer un tableau de structures en C. Il s’agit d’un ensemble de variables de structure multiples où chaque variable contient des informations sur différentes entités.

Tableau de struct en C

Un tableau est une collection séquentielle du même type de données, et une structure est un type de données défini par l’utilisateur. La déclaration d’un tableau de structures est la même que celle d’un tableau de types de données primitifs, mais utilise la structure avec le type de données de ses éléments.

Considérons un exemple de structure nommée Student comme ci-dessous :

struct Student {
  int rollNumber;
  char studentName[10];
  float percentage;
};

Nous pouvons déclarer un tableau de structures comme ci-dessous.

struct Student studentRecord[5];

Ici, le studentRecord est un tableau de 5 éléments où chaque élément est de type struct Student. Les éléments individuels sont accessibles en utilisant la notation de l’index ([]), et les membres sont accessibles en utilisant l’opérateur point ..

Le studentRecord[0] pointe vers le 0ème élément du tableau, et le studentRecord[1] pointe vers le 1ème élément du tableau.

De même,

  • Le studentRecord[0].rollNumber fait référence au membre rollNumber du 0ème élément du tableau.
  • Le studentRecord[0].studentName fait référence au membre studentName du 0ème élément du tableau.
  • Le studentRecord[0].percentage fait référence au membre percentage du 0ème élément du tableau.

Le programme complet pour déclarer un tableau de la struct en C est le suivant.

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

struct Student {
  int rollNumber;
  char studentName[10];
  float percentage;
};

int main(void) {
  int counter;
  struct Student studentRecord[5];

  printf("Enter Records of 5 students");

  for (counter = 0; counter < 5; counter++) {
    printf("\nEnter Roll Number:");
    scanf("%d", &studentRecord[counter].rollNumber);
    printf("\nEnter Name:");
    scanf("%s", &studentRecord[counter].studentName);
    printf("\nEnter percentage:");
    scanf("%f", &studentRecord[counter].percentage);
  }

  printf("\nStudent Information List:");

  for (counter = 0; counter < 5; counter++) {
    printf("\nRoll Number:%d\t Name:%s\t Percentage :%f\n",
           studentRecord[counter].rollNumber,
           studentRecord[counter].studentName,
           studentRecord[counter].percentage);
  }
  return 0;
}

Production :

Enter Record of 5 students
Enter Roll number:1
Enter Name: John
Enter percentage: 78

Enter Roll number:2
Enter Name: Nick
Enter percentage: 84

Enter Roll number:3
Enter Name: Jenny
Enter percentage: 56
  
Enter Roll number:4
Enter Name: Jack
Enter percentage: 77
   
Enter Roll number:5
Enter Name: Peter
Enter percentage: 76
    
   Student Information List
   Roll Number: 1		Name: John		percentage:78.000000
   Roll Number: 2		Name: Nick		percentage:84.000000
   Roll Number: 3		Name: Jenny		percentage:56.000000
   Roll Number: 4		Name: Jack		percentage:77.000000
   Roll Number: 5		Name: Peter		percentage:76.000000
       

Créer un tableau de struct en utilisant la fonction malloc() en C

Il y a une autre façon de faire un tableau de struct en C. La mémoire peut être allouée en utilisant la fonction malloc() pour un tableau de struct. C’est ce qu’on appelle l’allocation dynamique de mémoire.

La fonction malloc() (allocation de mémoire) est utilisée pour allouer dynamiquement un seul bloc de mémoire avec la taille spécifiée. Cette fonction retourne un pointeur de type void.

Le pointeur renvoyé peut être transformé en un pointeur de n’importe quelle forme. Il initialise chaque bloc avec la valeur par défaut de la mémoire morte (garbage).

La syntaxe de la fonction malloc() est la suivante :

ptrVariable = (cast - type*)malloc(byte - size)

Le programme complet pour créer un tableau de structure dynamique est comme ci-dessous.

#include <stdio.h>
int main(int argc, char** argv) {
  typedef struct {
    char* firstName;
    char* lastName;
    int rollNumber;

  } STUDENT;

  int numStudents = 2;
  int x;
  STUDENT* students = malloc(numStudents * sizeof *students);

  for (x = 0; x < numStudents; x++) {
    students[x].firstName = (char*)malloc(sizeof(char*));

    printf("Enter first name :");
    scanf("%s", students[x].firstName);
    students[x].lastName = (char*)malloc(sizeof(char*));
    printf("Enter last name :");
    scanf("%s", students[x].lastName);
    printf("Enter roll number  :");
    scanf("%d", &students[x].rollNumber);
  }

  for (x = 0; x < numStudents; x++)
    printf("First Name: %s, Last Name: %s, Roll number: %d\n",
           students[x].firstName, students[x].lastName, students[x].rollNumber);

  return (0);
}

Production :

Enter first name:John
Enter last name: Williams
Enter roll number:1

Enter first name:Jenny
Enter last name: Thomas
Enter roll number:2
    
First Name: John	Last Name: Williams		Roll Number:1
First Name: Jenny	Last Name: Thomas		Roll Number:2

Article connexe - C Array

Article connexe - C Struct