Menu
Coddy logo textTech

Wiederholung: Dynamische String-Konkatenation

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

challenge icon

Aufgabe

Einfach

Erstellen Sie ein C-Programm, das eine dynamische String-Verkettungsfunktion implementiert, um ein Textverarbeitungsprogramm zu erstellen. Ihr Programm sollte:

  1. Schreiben Sie eine Funktion namens concatenateStrings, die:
    • Zwei char* Parameter namens str1 und str2 entgegennimmt
    • Einen char* zurückgibt, der auf einen dynamisch zugewiesenen String zeigt
    • Den gesamten Speicherbedarf für beide Strings plus den Null-Terminator berechnet
    • malloc() verwendet, um genau die erforderliche Menge an Speicher zuzuweisen
    • Prüft, ob die Speicherzuweisung erfolgreich war (gibt NULL zurück, wenn die Zuweisung fehlschlägt)
    • strcpy() verwendet, um den ersten String in den zugewiesenen Speicher zu kopieren
    • strcat() verwendet, um den zweiten String an das Ergebnis anzuhängen
    • Den Pointer auf den neu erstellten verketteten String zurückgibt
  2. Schreiben Sie eine Funktion namens processText, die:
    • Drei char* Parameter entgegennimmt: word1, word2 und separator
    • Einen char* zurückgibt, der auf einen dynamisch zugewiesenen String zeigt
    • Einen kombinierten String im Format: word1 + separator + word2 erstellt
    • Zuerst concatenateStrings aufruft, um word1 und separator zu kombinieren
    • Dann erneut concatenateStrings aufruft, um word2 an das Ergebnis anzuhängen
    • Alle zwischenzeitlichen Speicherzuweisungen ordnungsgemäß freigibt
    • Das endgültige verkettete Ergebnis zurückgibt
  3. In der main-Funktion:
    • Drei Character-Arrays der Größe 50 deklariert: firstWord, secondWord und connector
    • Drei Strings von der Eingabe liest, die das erste Wort, das zweite Wort und das Verbindungsstück repräsentieren
    • Die Funktion processText mit diesen drei Strings aufruft
    • Prüft, ob der zurückgegebene Pointer nicht NULL ist
    • Bei Erfolg das Ergebnis in diesem exakten Format ausgibt: Result: [concatenated_string]
    • Falls die Speicherzuweisung fehlgeschlagen ist, folgendes ausgibt: Memory allocation failed
    • Die Länge des Ergebnis-Strings in diesem exakten Format berechnet und ausgibt: Length: [length]
    • Den dynamisch zugewiesenen Speicher freigibt

Diese Herausforderung testet Ihre Beherrschung der dynamischen Speicherzuweisung, der String-Manipulationsfunktionen, der Pointer-Rückgabewerte und der ordnungsgemäßen Speicherverwaltung. Sie üben die Berechnung des Speicherbedarfs, die Verwendung von malloc() und free(), die Arbeit mit mehreren String-Funktionen und den Umgang mit Fehlern bei der Speicherzuweisung. Die Herausforderung zeigt, wie die dynamische Zuweisung es Funktionen ermöglicht, Daten zu erstellen und zurückzugeben, die über ihren Gültigkeitsbereich hinaus bestehen bleiben.

Probier es selbst

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// TODO: Schreiben Sie hier Ihre concatenateStrings-Funktion

// TODO: Schreiben Sie hier Ihre processText-Funktion

int main() {
    // Eingabe lesen
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: Schreiben Sie Ihren Code unten
    // Rufen Sie die processText-Funktion auf und verarbeiten Sie das Ergebnis
    
    return 0;
}

Alle Lektionen in Logic & Flow