Menu
Coddy logo textTech

Uso de strcpy()

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 16 de 63.

Has aprendido a encontrar la longitud de las cadenas con strlen(), ¿pero qué pasa si necesitas copiar el contenido de una cadena en otra? En C, no puedes usar el operador de asignación (=) para copiar cadenas como lo harías con variables normales.

La razón es que las cadenas son arreglos de caracteres, y cuando usas = con arreglos, solo estás copiando la dirección de memoria, no el contenido real. Aquí es donde la función strcpy() de la biblioteca <string.h> se vuelve esencial.

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // Copia "Hello" en destination

La función strcpy() toma dos argumentos: el array de destino (a donde quieres copiar) y la cadena de origen (lo que quieres copiar). Copia cada carácter desde el origen al destino, incluyendo el terminador nulo.

Es crucial que el array de destino sea lo suficientemente grande como para contener la cadena de origen completa más el terminador nulo. Si el destino es demasiado pequeño, strcpy() escribirá más allá de los límites del array, lo que provocará un comportamiento indefinido.

Esta función es fundamental para la manipulación de cadenas en C, permitiéndote duplicar cadenas, inicializar variables de cadena con contenido existente y preparar cadenas para un procesamiento posterior.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre el copiado de cadenas utilizando la función strcpy(). Tu programa debe:

  1. Leer un entero n que represente el número de operaciones de cadena a realizar
  2. Para cada operación:
    • Leer una cadena de origen (source) desde la entrada
    • Declarar un arreglo de caracteres llamado destination con 100 elementos
    • Usar strcpy() para copiar la cadena de origen en el arreglo de destino
    • Imprimir tanto la cadena de origen original como la cadena de destino copiada
  3. Después de todas las operaciones, demostrar que las cadenas copiadas son independientes:
    • Modificando el primer carácter del último arreglo destination a 'X'
    • Imprimiendo la cadena de destino modificada para mostrar que ha cambiado

Recuerda incluir el encabezado <string.h> para usar la función strcpy().

Tu salida debe mostrar los resultados en el siguiente formato:

Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]

Por ejemplo, si la entrada es:

3
hello
world
programming

Tu salida debe ser:

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

Este desafío pone a prueba tu comprensión del uso de strcpy() para copiar el contenido de cadenas de un arreglo de caracteres a otro, la asignación adecuada de memoria para los arreglos de destino y demuestra que las cadenas copiadas son independientes de sus orígenes.

Hoja de referencia

Para copiar cadenas en C, usa strcpy() de la biblioteca <string.h>. No puedes usar el operador de asignación (=) para copiar cadenas porque solo copia direcciones de memoria, no el contenido real.

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // Copia "Hello" en destination

La función strcpy() toma dos argumentos: el array de destino (a donde quieres copiar) y la cadena de origen (lo que quieres copiar). Copia cada carácter del origen al destino, incluyendo el terminador nulo.

El array de destino debe ser lo suficientemente grande como para contener toda la cadena de origen más el terminador nulo para evitar un comportamiento indefinido.

Pruébalo tú mismo

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

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // TODO: Escribe tu código aquí
    // Usa un bucle para procesar n operaciones de cadenas
    // Para cada operación:
    // - Lee la cadena de origen
    // - Usa strcpy() para copiar el origen al destino
    // - Imprime ambas cadenas en el formato requerido
    
    // TODO: Después del bucle, modifica el primer carácter del último destino
    // e imprime la cadena modificada
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow