Menu
Coddy logo textTech

Resumen: String Wrapper

Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 16 de 61.

challenge icon

Desafío

Fácil

Construyamos un módulo StringObject que envuelva un arreglo de caracteres asignado dinámicamente. Este desafío de repaso reúne el ciclo de vida completo del objeto, el constructor, el método de solo lectura y el destructor, todos trabajando juntos para gestionar la memoria de forma segura.

Crearás tres archivos:

  • stringobj.h: Declara una estructura StringObject con un único miembro: char *text (un pointer a un string asignado dinámicamente). Declara también tres funciones:
    • create_string: recibe una entrada const char * y returns un pointer a un StringObject recién asignado
    • print_string: recibe un const StringObject * y displays el texto almacenado
    • free_string: recibe un StringObject * y libera toda la memoria asignada
    Usa guards de inclusión con el símbolo STRINGOBJ_H.
  • stringobj.c: Implementa las tres funciones. Tu constructor debe asignar memoria para la estructura, después asignar memoria para el texto (recuerda strlen más uno para el terminador null) y copiar el string de entrada. Tu destructor debe liberar en orden inverso: primero el búfer interno text y después la propia estructura. Incluye una comprobación de NULL en tu destructor por safety.
  • main.c: Usa tu módulo para crear un objeto string, displays su contenido y después realiza una limpieza adecuada.

Recibirás una entrada: un string de texto que se almacenará en tu StringObject.

En tu archivo principal, crea un StringObject con el texto proporcionado, muestra su contenido, libera la memoria y después muestra un mensaje de confirmación.

La función print_string debe producir la salida con este formato:

Text: {text}

Después de liberar, muestra:

Freed

Por ejemplo, con la entrada Hello World, la salida sería:

Text: Hello World
Freed
REQUIRED OUTPUT FORMAT: [Tu contenido traducido aquí]

Pruébalo tú mismo

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

int main() {
    char input[256];
    fgets(input, sizeof(input), stdin);
    
    // Eliminar el salto de línea si está presente
    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: Imprimir la cadena usando print_string
    
    // TODO: Free the StringObject using free_string
    
    // TODO: Imprimir "Freed" para confirmar la limpieza
    
    return 0;
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C online