Récap : Modifier une structure - Ptr
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 49 sur 63.
Défi
FacileCréez un programme C qui illustre un système complet de gestion des employés utilisant l'allocation dynamique de mémoire, des pointeurs de structure et des fonctions. Votre programme doit :
- Définir une
structnomméeEmployeeavec les membres suivants :- Un entier
idpour stocker l'ID 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 département - 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 un pointeur vers une structure
Employeeen paramètre - Lit les informations de l'employé à partir de l'entrée dans cet ordre : ID, nom, département, salaire, années de service
- Assigne les valeurs aux membres de la structure en utilisant l'opérateur flèche
- Calcule un bonus basé sur les années de service : si years >= 5, le bonus est de 10% du salaire, sinon il est de 5% du salaire
- Ajoute le bonus au salaire :
empPtr->salary += bonus;
- Prend un pointeur vers une structure
- Écrire une fonction nommée
displayEmployeequi :- Prend un pointeur vers une structure
Employeeen paramètre - Affiche les informations de l'employé exactement dans ce format :
Employee Details:ID: [id]Name: [name]Department: [department]Salary: [salary]Years of Service: [yearsOfService]
- Prend un pointeur vers une structure
- Écrire une fonction nommée
promoteEmployeequi :- Prend un pointeur vers une structure
Employeeen paramètre - Augmente le salaire de 15% en utilisant l'opérateur flèche
- Incrémente les années de service de 1
- Affiche
Employee promoted successfully!
- Prend 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 - Si elle réussit, afficher
Memory allocated successfully
- Si
- Appeler
fillEmployeeDatapour remplir 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
displayEmployeeà nouveau pour afficher les informations mises à jour - Libérer la mémoire allouée dynamiquement en utilisant
free(empPtr) - Afficher
Memory freed successfully
- Déclarer un pointeur vers une structure
Ce défi combine tous les concepts clés du chapitre : la définition de structures, l'allocation dynamique de mémoire avec malloc(), la vérification des échecs d'allocation, le passage de pointeurs de structure aux fonctions, l'utilisation de l'opérateur flèche pour accéder et modifier les membres d'une structure, et le nettoyage approprié de la mémoire avec free(). Les fonctions démontrent comment les pointeurs permettent la modification directe des données de la structure originale.
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 Logic & Flow
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înes