Récap : Modifier une structure - Ptr
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 49 sur 63.
Défi
FacileCréez un programme C qui démontre un système complet de gestion des employés à l’aide de l’allocation dynamique de mémoire, de pointeurs vers des structures et de fonctions. Votre programme doit :
- Définir une
structnomméeEmployeeavec les membres suivants :- Un entier
idpour stocker l’identifiant de l’employé - Un tableau de caractères
namede taille 50 pour stocker le nom de l’employé - Un tableau de caractères
departmentde taille 30 pour stocker le nom du service - Un flottant
salarypour stocker le salaire de l’employé - Un entier
yearsOfServicepour stocker les années de service
- Un entier
- Écrire une fonction nommée
fillEmployeeDataqui :- Prend en paramètre un pointeur vers une structure
Employee - Lit les informations de l’employé depuis l’entrée dans cet ordre : identifiant, nom, service, salaire, années de service
- Affecte les valeurs aux membres de la structure à l’aide de l’opérateur flèche
- Calcule une prime en fonction des années de service : si les années >= 5, la prime correspond à 10 % du salaire, sinon à 5 % du salaire
- Ajoute la prime au salaire :
empPtr->salary += bonus;
- Prend en paramètre un pointeur vers une structure
- Écrire une fonction nommée
displayEmployeequi :- Prend en paramètre un pointeur vers une structure
Employee - Affiche les informations de l’employé dans ce format exact :
Employee Details:ID: [id]Name: [name]Department: [department]Salary: [salary]Years of Service: [yearsOfService]
- Prend en paramètre un pointeur vers une structure
- Écrire une fonction nommée
promoteEmployeequi :- Prend en paramètre un pointeur vers une structure
Employee - Augmente le salaire de 15 % à l’aide de l’opérateur flèche
- Incrémente les années de service de 1
- Affiche
Employee promoted successfully!
- Prend en paramètre un pointeur vers une structure
- Dans la fonction main :
- Déclarer un pointeur vers une structure
EmployeenomméempPtr - Utiliser
malloc()pour allouer dynamiquement de la mémoire pour une structureEmployee - Vérifier si l’allocation de mémoire a réussi :
- Si
empPtrestNULL, afficherMemory allocation failedet quitter le programme - En cas de réussite, afficher
Memory allocated successfully
- Si
- Appeler
fillEmployeeDatapour renseigner les données de l’employé - Afficher
Initial employee data: - Appeler
displayEmployeepour afficher les informations initiales de l’employé - Appeler
promoteEmployeepour promouvoir l’employé - Afficher
After promotion: - Appeler à nouveau
displayEmployeepour afficher les informations mises à jour - Libérer la mémoire allouée dynamiquement à l’aide de
free(empPtr) - Afficher
Memory freed successfully
- Déclarer un pointeur vers une structure
Ce défi combine tous les concepts clés du chapitre : définir des structures, effectuer une allocation dynamique de mémoire avec malloc(), vérifier l’échec de l’allocation, transmettre des pointeurs vers des structures aux fonctions, utiliser l’opérateur flèche pour accéder aux membres d’une structure et les modifier, ainsi qu’effectuer un nettoyage correct de la mémoire avec free(). Les fonctions démontrent comment les pointeurs permettent de modifier directement les données de la structure d’origine.
Essayez vous-même
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// TODO: Définir la structure Employee ici
// TODO: Implémenter la fonction fillEmployeeData ici
// TODO: Implémenter la fonction displayEmployee ici
// TODO: Implémenter la fonction promoteEmployee ici
int main() {
// TODO: Déclarer empPtr et allouer de la mémoire
// TODO: Vérifier si l'allocation de mémoire a réussi
// TODO: Remplir les données de l'employé, afficher les données initiales, promouvoir et afficher après la promotion
// TODO: Libérer la mémoire et afficher un message de succès
return 0;
}Toutes les leçons de Logique & Flux
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction8Structures et Pointeurs
Pointeurs vers des structuresL'opérateur flèche (->)Passage de structures par valeurPassage de pointeurs de structuresAllocation dynamique de structuresRécap : Modifier une structure - Ptr3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînesEntraînez-vous par vous-même : Compilateur C en ligne