Menu
Coddy logo textTech

Funktion zum Befüllen eines Kontakts

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 52 von 63.

challenge icon

Aufgabe

Einfach

Aufbauend auf deiner Kontakt-Erstellungsfunktion aus der vorherigen Lektion erstellst du eine Funktion, die einen Kontakt mit Benutzereingaben füllt. Dein Programm sollte:

  1. Dieselbe Contact-Strukturdefinition aus den vorherigen Lektionen verwenden, mit folgenden Mitgliedern:
    • Ein Zeichenarray name mit der Größe 50
    • Ein Zeichenarray phone mit der Größe 20
    • Ein Zeichenarray 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 Mitglieder mit Standardwerten initialisiert
    • Einen Zeiger auf den Kontakt zurückgibt
  3. Eine Funktion namens populateContact schreiben, die:
    • Einen Zeiger auf eine Contact-Struktur als Parameter übernimmt
    • Nichts zurückgibt (void)
    • Den Benutzer zur Eingabe auffordert und die folgenden Daten in genau dieser Reihenfolge einliest:
      • Enter name: ausgibt und mithilfe von scanf("%s", contactPtr->name) eine Zeichenkette in das Namensfeld einliest
      • Enter phone: ausgibt und mithilfe von scanf("%s", contactPtr->phone) eine Zeichenkette in das Telefonfeld einliest
      • Enter email: ausgibt und mithilfe von scanf("%s", contactPtr->email) eine Zeichenkette in das E-Mail-Feld einliest
      • Enter age: ausgibt und mithilfe von scanf("%d", &contactPtr->age) eine Ganzzahl in das Altersfeld einliest
    • Nach dem Einlesen aller Eingaben die Daten validiert:
      • Wenn das Alter kleiner als 0 oder größer als 120 ist, Invalid age entered ausgibt
      • Wenn die Länge der Telefonnummer kleiner als 10 Zeichen ist (verwende strlen()), Invalid phone number ausgibt
      • Wenn alle Validierungen erfolgreich sind, Contact populated successfully ausgibt
  4. In der main-Funktion:
    • Einen Kontakt mithilfe der Funktion createContact erstellen
    • Überprüfen, ob die Erstellung des Kontakts erfolgreich war
    • Die Funktion populateContact aufrufen, um die Kontaktdaten auszufüllen
    • Nach dem Ausfüllen die Kontaktinformationen mithilfe des Pfeiloperators in genau diesem Format anzeigen:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Den dynamisch reservierten Speicher freigeben
    • Contact deleted successfully ausgeben

Diese Herausforderung zeigt, wie du Funktionen erstellst, die Struktur-Daten über Zeiger verändern. Die Funktion populateContact erhält einen Zeiger auf den Kontakt und verwendet den Pfeiloperator, um die Mitglieder der ursprünglichen Struktur direkt zu verändern. Du übst dabei die Verarbeitung von Benutzereingaben, die Datenvalidierung und das Arbeiten 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 Logik & Ablauf

Übe selbstständig: Online-C-Compiler