Menu
CoddyTech

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 der Kontakt-Erstellungsfunktion aus der vorherigen Lektion erstellst du eine Funktion, die einen Kontakt mit Benutzereingaben füllt. Dein Programm sollte:

  1. Dieselbe Contact-Struct-Definition aus den vorherigen Lektionen mit den folgenden Mitgliedern verwenden:
    • 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 Funktion createContact aus der vorherigen Lektion verwenden, aber ihre printf-Zeilen entfernen, sodass sie nicht mehr Contact created successfully ausgibt. Sie soll weiterhin:
    • Speicher für eine Contact-Struct dynamisch reservieren
    • Alle Mitglieder mit Standardwerten initialisieren
    • Einen Zeiger auf den Kontakt zurückgeben
  3. Eine Funktion namens populateContact schreiben, die:
    • Einen Zeiger auf eine Contact-Struct als Parameter entgegennimmt
    • Nichts zurückgibt (void)
    • Den Benutzer zur Eingabe auffordert und die folgenden Daten in genau dieser Reihenfolge einliest:
      • Enter name: ausgibt und mit scanf("%s", contactPtr->name) eine Zeichenfolge in das Namensfeld einliest
      • Enter phone: ausgibt und mit scanf("%s", contactPtr->phone) eine Zeichenfolge in das Telefonfeld einliest
      • Enter email: ausgibt und mit scanf("%s", contactPtr->email) eine Zeichenfolge in das E-Mail-Feld einliest
      • Enter age: ausgibt und mit scanf("%d", &contactPtr->age) eine Ganzzahl in das Altersfeld einliest
    • Nach dem Einlesen aller Eingaben die Daten überprüft:
      • Wenn das Alter kleiner als 0 oder größer als 120 ist, Invalid age entered ausgibt
      • Wenn die Telefonnummer weniger als 10 Zeichen lang ist (strlen() verwenden), Invalid phone number ausgibt
      • Wenn alle Prüfungen bestanden werden, Contact populated successfully ausgibt
  4. In der Hauptfunktion:
    • Einen Kontakt mit der Funktion createContact erstellen
    • Überprüfen, ob der Kontakt erfolgreich erstellt wurde
    • Die Funktion populateContact aufrufen, um die Kontaktdaten einzutragen
    • Nach dem Ausfüllen die Kontaktinformationen mit dem Pfeiloperator 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 Aufgabe zeigt, wie du Funktionen erstellst, die Struct-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 Struct direkt zu verändern. Du übst den Umgang mit Benutzereingaben, die Datenvalidierung und die Arbeit mit dynamisch reservierten Structs ü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