Menu
Coddy logo textTech

Fonction pour remplir un contact

Fait partie de la section Logic & Flow 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 remplit un contact avec les entrées de l'utilisateur. Votre programme doit :

  1. Utiliser la même définition de struct Contact des leçons précédentes avec les membres :
    • 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 de la leçon précédente qui :
    • Alloue dynamiquement de la mémoire pour une struct Contact
    • Initialise tous les membres aux valeurs par défaut
    • Retourne un pointeur vers le contact
  3. Écrire une fonction nommée populateContact qui :
    • Prend un pointeur vers une struct 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 de caractères dans le champ name en utilisant scanf("%s", contactPtr->name)
      • Affiche Enter phone: et lit une chaîne de caractères dans le champ phone en utilisant scanf("%s", contactPtr->phone)
      • Affiche Enter email: et lit une chaîne de caractères dans le champ email en utilisant scanf("%s", contactPtr->email)
      • Affiche Enter age: et lit un entier dans le champ age en utilisant scanf("%d", &contactPtr->age)
    • Après avoir lu toutes les entrées, valide les données :
      • 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ée un contact en utilisant la fonction createContact
    • Vérifie si la création du contact a réussi
    • Appelle la fonction populateContact pour remplir les données du contact
    • Après le remplissage, affiche les informations du contact en utilisant l'opérateur flèche dans ce format exact :
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Libère la mémoire allouée dynamiquement
    • Affiche Contact deleted successfully

Ce défi démontre comment créer des fonctions qui modifient les données d'une struct via des 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 struct originale. Vous pratiquerez la gestion des entrées utilisateur, la validation des données et le travail avec des structs allouées dynamiquement via des 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 Logic & Flow