Menu
CoddyTech

Wiederholung: Dynamische String-Konkatenation

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

challenge icon

Aufgabe

Einfach

Erstelle ein C-Programm, das eine Funktion zur dynamischen Verkettung von Zeichenfolgen implementiert, um ein Dienstprogramm zur Textverarbeitung zu erstellen. Dein Programm soll:

  1. Eine Funktion namens concatenateStrings schreiben, die:
    • Zwei Parameter vom Typ char* namens str1 und str2 entgegennimmt
    • Ein char* zurückgibt, das auf eine dynamisch zugewiesene Zeichenfolge zeigt
    • Den insgesamt benötigten Speicher für beide Zeichenfolgen plus den Nullterminator berechnet
    • malloc() verwendet, um exakt die benötigte Speichermenge zuzuweisen
    • Überprüft, ob die Speicherzuweisung erfolgreich war (gibt NULL zurück, wenn die Zuweisung fehlschlägt)
    • strcpy() verwendet, um die erste Zeichenfolge in den zugewiesenen Speicher zu kopieren
    • strcat() verwendet, um die zweite Zeichenfolge an das Ergebnis anzuhängen
    • Den Zeiger auf die neu erstellte verkettete Zeichenfolge zurückgibt
  2. Eine Funktion namens processText schreiben, die:
    • Drei Parameter vom Typ char* entgegennimmt: word1, word2 und separator
    • Ein char* zurückgibt, das auf eine dynamisch zugewiesene Zeichenfolge zeigt
    • Eine kombinierte Zeichenfolge im Format erstellt: word1 + separator + word2
    • Zuerst concatenateStrings aufruft, um word1 und separator zu verketten
    • 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 Funktion main:
    • Drei Zeichenarrays mit jeweils der Größe 50 deklarieren: firstWord, secondWord und connector
    • Drei Zeichenfolgen aus der Eingabe einlesen, die das erste Wort, das zweite Wort und das Verbindungselement darstellen
    • Die Funktion processText mit diesen drei Zeichenfolgen aufrufen
    • Überprüfen, ob der zurückgegebene Zeiger nicht NULL ist
    • Bei Erfolg das Ergebnis in diesem exakten Format ausgeben: Result: [concatenated_string]
    • Bei fehlgeschlagener Speicherzuweisung Folgendes ausgeben: Memory allocation failed
    • Die Länge der Ergebniszeichenfolge berechnen und in diesem exakten Format ausgeben: Length: [length]
    • Den dynamisch zugewiesenen Speicher freigeben

Diese Herausforderung prüft deine Kenntnisse der dynamischen Speicherzuweisung, der Zeichenfolgenmanipulationsfunktionen, der Rückgabewerte von Zeigern und der ordnungsgemäßen Speicherverwaltung. Du übst, den Speicherbedarf zu berechnen, malloc() und free() zu verwenden, mit mehreren Zeichenfolgenfunktionen zu arbeiten und Fehler bei der Speicherzuweisung zu behandeln. Die Herausforderung zeigt, wie Funktionen mithilfe dynamischer Speicherzuweisung Daten erstellen und zurückgeben können, die über ihren Gültigkeitsbereich hinaus bestehen bleiben.

Probier es selbst

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

// TODO: Schreibe hier deine Funktion concatenateStrings

// TODO: Schreibe hier deine Funktion processText

int main() {
    // Eingabe einlesen
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: Schreibe deinen Code unten
    // Rufe die Funktion processText auf und verarbeite das Ergebnis
    
    return 0;
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C-Compiler