Menu
Coddy logo textTech

Récapitulatif : String Wrapper

Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 16 sur 61.

challenge icon

Défi

Facile

Construisons un module StringObject qui encapsule un tableau de caractères alloué dynamiquement. Ce défi récapitulatif réunit le cycle de vie complet de l’objet, le constructeur, la méthode en lecture seule et le destructeur, qui fonctionnent ensemble pour gérer la memory en toute safety.

Vous allez créer trois fichiers :

  • stringobj.h : Declare une structure StringObject avec un seul member : char *text (un pointer vers une string allouée dynamiquement). Declare également trois fonctions :
    • create_string : prend une entrée const char * et returns un pointer vers un StringObject nouvellement alloué
    • print_string : prend un const StringObject * et displays le texte stocké
    • free_string : prend un StringObject * et libère toute la memory allouée
    Utilisez des gardes d’inclusion avec le symbole STRINGOBJ_H.
  • stringobj.c : Implement les trois fonctions. Votre constructeur doit allouer de la memory pour la structure, puis allouer de la memory pour le texte (n’oubliez pas strlen plus un pour le terminateur null), et Copy la string d’entrée. Votre destructeur doit libérer dans l’ordre inverse : le tampon interne text d’abord, puis la structure elle-même. Ajoutez une vérification NULL dans votre destructeur pour la safety.
  • main.c : Utilisez votre module pour Create un objet chaîne, afficher son contenu, puis effectuer correctement le nettoyage.

Vous recevrez une entrée : une string de texte à stocker dans votre StringObject.

Dans votre fichier principal, Create un StringObject avec le texte fourni, affichez son contenu, libérez la memory, puis affichez un message de confirmation.

La fonction print_string doit produire le format suivant :

Text: {text}

Après la libération, affichez :

Freed

Par exemple, avec l’entrée Hello World, la sortie serait :

Text: Hello World
Freed
FORMAT DE SORTIE REQUIS : [Votre contenu traduit ici]

Essayez vous-même

#include <stdio.h>
#include "stringobj.h"

int main() {
    char input[256];
    fgets(input, sizeof(input), stdin);
    
    // Supprimer le saut de ligne s'il est présent
    int len = 0;
    while (input[len] != '\0') len++;
    if (len > 0 && input[len - 1] == '\n') {
        input[len - 1] = '\0';
    }
    
    // TODO: Create a StringObject with the input text
    
    // TODO: Afficher la chaîne en utilisant print_string
    
    // TODO: Free the StringObject using free_string
    
    // TODO: Afficher "Freed" pour confirmer le nettoyage
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C en ligne