Fonction pour remplir un contact
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 52 sur 63.
Défi
FacileEn vous appuyant sur votre fonction de création de contact de la leçon précédente, créez une fonction qui renseigne un contact avec les données saisies par l’utilisateur. Votre programme doit :
- Utiliser la même définition de la structure
Contactque dans les leçons précédentes, avec les membres suivants :- Un tableau de caractères
namede taille 50 - Un tableau de caractères
phonede taille 20 - Un tableau de caractères
emailde taille 40 - Un entier
age
- Un tableau de caractères
- Utiliser la même fonction
createContactque dans la leçon précédente, qui :- Alloue dynamiquement de la mémoire pour une structure
Contact - Initialise tous les membres avec des valeurs par défaut
- Retourne un pointeur vers le contact
- Alloue dynamiquement de la mémoire pour une structure
- Écrire une fonction nommée
populateContactqui :- Prend un pointeur vers une structure
Contactcomme paramètre - Ne retourne rien (void)
- Demande à l’utilisateur de saisir des données et lit les données suivantes dans cet ordre exact :
- Affiche
Enter name:et lit une chaîne dans le champ name à l’aide descanf("%s", contactPtr->name) - Affiche
Enter phone:et lit une chaîne dans le champ phone à l’aide descanf("%s", contactPtr->phone) - Affiche
Enter email:et lit une chaîne dans le champ email à l’aide descanf("%s", contactPtr->email) - Affiche
Enter age:et lit un entier dans le champ age à l’aide descanf("%d", &contactPtr->age)
- Affiche
- Après avoir lu toutes les données, valide les informations :
- Si l’âge est inférieur à 0 ou supérieur à 120, affiche
Invalid age entered - Si la longueur du numéro de téléphone est inférieure à 10 caractères (utilisez
strlen()), afficheInvalid phone number - Si toutes les validations réussissent, affiche
Contact populated successfully
- Si l’âge est inférieur à 0 ou supérieur à 120, affiche
- Prend un pointeur vers une structure
- Dans la fonction main :
- Créer un contact à l’aide de la fonction
createContact - Vérifier si la création du contact a réussi
- Appeler la fonction
populateContactpour renseigner les données du contact - Après avoir renseigné le contact, afficher ses informations à l’aide de l’opérateur flèche dans ce format exact :
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Libérer la mémoire allouée dynamiquement
- Afficher
Contact deleted successfully
- Créer un contact à l’aide de la fonction
Ce défi montre comment créer des fonctions qui modifient les données d’une structure par l’intermédiaire de pointeurs. La fonction populateContact reçoit un pointeur vers le contact et utilise l’opérateur flèche pour modifier directement les membres de la structure d’origine. Vous vous exercerez à gérer les saisies utilisateur, à valider les données et à manipuler des structures allouées dynamiquement par l’intermédiaire de paramètres de fonction.
Essayez vous-même
#include <stdio.h>
#include <stdlib.h>
struct Contact {
char name[50];
char phone[20];
char email[40];
int age;
};
struct Contact* createContact() {
struct Contact* contactPtr = (struct Contact*)malloc(sizeof(struct Contact));
if (contactPtr == NULL) {
printf("Memory allocation failed\n");
return NULL;
}
printf("Contact created successfully\n");
contactPtr->name[0] = '\0';
contactPtr->phone[0] = '\0';
contactPtr->email[0] = '\0';
contactPtr->age = 0;
return contactPtr;
}
int main() {
struct Contact* newContact;
newContact = createContact();
if (newContact == NULL) {
printf("Failed to create contact\n");
return 1;
}
printf("Contact initialized with default values\n");
printf("Default Contact Values:\n");
printf("Name: %s\n", newContact->name);
printf("Phone: %s\n", newContact->phone);
printf("Email: %s\n", newContact->email);
printf("Age: %d\n", newContact->age);
free(newContact);
printf("Memory freed successfully\n");
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 fonction3Tableaux 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înes6Gestion de la mémoire
Mémoire Pile vs TasAllocation dynamique - malloc()Utiliser sizeof() pour l'allocationVérifier l'échec de l'allocationLibérer la mémoire avec free()Allouer avec calloc()Récapitulatif : Tableaux dynamiques9Projet : Saisie de contact simple
Projet : Définir la structure ContactFonction pour créer un contactEntraînez-vous par vous-même : Compilateur C en ligne