Menu
Coddy logo textTech

Funktion zum Befüllen eines Kontakts

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 52 von 63.

challenge icon

Aufgabe

Einfach

Aufbauend auf Ihrer Funktion zur Kontakterstellung aus der vorherigen Lektion sollen Sie eine Funktion erstellen, die einen Kontakt mit Benutzereingaben füllt. Ihr Programm sollte:

  1. Dieselbe Contact-Strukturdefinition aus den vorherigen Lektionen mit folgenden Elementen verwenden:
    • Ein Zeichen-Array name mit der Größe 50
    • Ein Zeichen-Array phone mit der Größe 20
    • Ein Zeichen-Array email mit der Größe 40
    • Eine Ganzzahl age
  2. Dieselbe createContact-Funktion aus der vorherigen Lektion verwenden, die:
    • Dynamisch Speicher für eine Contact-Struktur reserviert
    • Alle Elemente auf Standardwerte initialisiert
    • Einen Pointer auf den Kontakt zurückgibt
  3. Schreiben Sie eine Funktion namens populateContact, die:
    • Einen Pointer auf eine Contact-Struktur als Parameter entgegennimmt
    • Nichts zurückgibt (void)
    • Den Benutzer zur Eingabe auffordert und die folgenden Daten in genau dieser Reihenfolge einliest:
      • Gibt Enter name: aus und liest einen String in das Namensfeld mit scanf("%s", contactPtr->name) ein
      • Gibt Enter phone: aus und liest einen String in das Telefonfeld mit scanf("%s", contactPtr->phone) ein
      • Gibt Enter email: aus und liest einen String in das E-Mail-Feld mit scanf("%s", contactPtr->email) ein
      • Gibt Enter age: aus und liest eine Ganzzahl in das Altersfeld mit scanf("%d", &contactPtr->age) ein
    • Nach dem Einlesen aller Eingaben die Daten validiert:
      • Wenn das Alter kleiner als 0 oder größer als 120 ist, wird Invalid age entered ausgegeben
      • Wenn die Länge der Telefonnummer weniger als 10 Zeichen beträgt (verwenden Sie strlen()), wird Invalid phone number ausgegeben
      • Wenn alle Validierungen bestanden sind, wird Contact populated successfully ausgegeben
  4. In der main-Funktion:
    • Erstellen Sie einen Kontakt mit der Funktion createContact
    • Überprüfen Sie, ob die Kontakterstellung erfolgreich war
    • Rufen Sie die Funktion populateContact auf, um die Kontaktdaten auszufüllen
    • Zeigen Sie nach dem Ausfüllen die Kontaktinformationen unter Verwendung des Pfeil-Operators in genau diesem Format an:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Geben Sie den dynamisch reservierten Speicher frei
    • Geben Sie Contact deleted successfully aus

Diese Herausforderung zeigt, wie man Funktionen erstellt, die Strukturdaten über Pointer modifizieren. Die Funktion populateContact erhält einen Pointer auf den Kontakt und verwendet den Pfeil-Operator, um die Elemente der ursprünglichen Struktur direkt zu ändern. Sie üben den Umgang mit Benutzereingaben, die Datenvalidierung und die Arbeit mit dynamisch reservierten Strukturen über Funktionsparameter.

Probier es selbst

#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;
}

Alle Lektionen in Logic & Flow