Menu
Coddy logo textTech

Fonction pour remplir un contact

Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 52 sur 63.

challenge icon

Défi

Facile

En 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 :

  1. Utiliser la même définition de la structure Contact que dans les leçons précédentes, avec les membres suivants :
    • Un tableau de caractères name de taille 50
    • Un tableau de caractères phone de taille 20
    • Un tableau de caractères email de taille 40
    • Un entier age
  2. Utiliser la même fonction createContact que 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
  3. Écrire une fonction nommée populateContact qui :
    • Prend un pointeur vers une structure Contact comme 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 de scanf("%s", contactPtr->name)
      • Affiche Enter phone: et lit une chaîne dans le champ phone à l’aide de scanf("%s", contactPtr->phone)
      • Affiche Enter email: et lit une chaîne dans le champ email à l’aide de scanf("%s", contactPtr->email)
      • Affiche Enter age: et lit un entier dans le champ age à l’aide de scanf("%d", &contactPtr->age)
    • 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()), affiche Invalid phone number
      • Si toutes les validations réussissent, affiche Contact populated successfully
  4. 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 populateContact pour 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

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

Entraînez-vous par vous-même : Compilateur C en ligne