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 membrerollNumber
du 0ème élément du tableau. - Le
studentRecord[0].studentName
fait référence au membrestudentName
du 0ème élément du tableau. - Le
studentRecord[0].percentage
fait référence au membrepercentage
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
- Allocation dynamique d'un tableau en C
- Copier le tableau de caractères en C
- Effacer le tableau de caractères en C
- Imprimer le tableau de caractères en C
- Initialiser le réseau de chariots en C
- Tableau de chaînes de caractères en C