Funktion zum Befüllen eines Kontakts
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 52 von 63.
Aufgabe
EinfachAufbauend auf deiner Kontakt-Erstellungsfunktion aus der vorherigen Lektion erstellst du eine Funktion, die einen Kontakt mit Benutzereingaben füllt. Dein Programm sollte:
- Dieselbe
Contact-Strukturdefinition aus den vorherigen Lektionen verwenden, mit folgenden Mitgliedern:- Ein Zeichenarray
namemit der Größe 50 - Ein Zeichenarray
phonemit der Größe 20 - Ein Zeichenarray
emailmit der Größe 40 - Eine Ganzzahl
age
- Ein Zeichenarray
- 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
- Dynamisch Speicher für eine
- Eine Funktion namens
populateContactschreiben, 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 vonscanf("%s", contactPtr->name)eine Zeichenkette in das Namensfeld einliestEnter phone:ausgibt und mithilfe vonscanf("%s", contactPtr->phone)eine Zeichenkette in das Telefonfeld einliestEnter email:ausgibt und mithilfe vonscanf("%s", contactPtr->email)eine Zeichenkette in das E-Mail-Feld einliestEnter age:ausgibt und mithilfe vonscanf("%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 enteredausgibt - Wenn die Länge der Telefonnummer kleiner als 10 Zeichen ist (verwende
strlen()),Invalid phone numberausgibt - Wenn alle Validierungen erfolgreich sind,
Contact populated successfullyausgibt
- Wenn das Alter kleiner als 0 oder größer als 120 ist,
- Einen Zeiger auf eine
- In der main-Funktion:
- Einen Kontakt mithilfe der Funktion
createContacterstellen - Überprüfen, ob die Erstellung des Kontakts erfolgreich war
- Die Funktion
populateContactaufrufen, 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 successfullyausgeben
- Einen Kontakt mithilfe der Funktion
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
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-Funktionen6Speicherverwaltung
Stack vs. Heap SpeicherDynamische Allokation - malloc()Verwendung von sizeof() für die AllokationÜberprüfung auf AllokationsfehlerSpeicher freigeben mit free()Allokation mit calloc()Rückblick: Dynamische Arrays9Projekt: Einfache Kontakteingabe
Projekt: Kontakt-Struct definierenFunktion zum Erstellen eines KontaktsÜbe selbstständig: Online-C-Compiler