Menu
Coddy logo textTech

Usando strcpy()

Parte da seção Logic & Flow do Journey de C da Coddy — lição 16 de 63.

Você aprendeu como encontrar o comprimento de strings com strlen(), mas e se você precisar copiar o conteúdo de uma string para outra? Em C, você não pode usar o operador de atribuição (=) para copiar strings como faria com variáveis comuns.

A razão é que strings são arrays de caracteres e, quando você usa = com arrays, você está apenas copiando o endereço de memória, não o conteúdo real. É aqui que a função strcpy() da biblioteca <string.h> torna-se essencial.

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

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

A função strcpy() recebe dois argumentos: o array de destino (para onde você deseja copiar) e a string de origem (o que você deseja copiar). Ela copia cada caractere da origem para o destino, incluindo o terminador nulo.

É crucial que o seu array de destino seja grande o suficiente para conter toda a string de origem, além do terminador nulo. Se o destino for muito pequeno, o strcpy() escreverá além dos limites do array, causando comportamento indefinido.

Esta função é fundamental para a manipulação de strings em C, permitindo que você duplique strings, inicialize variáveis de string com conteúdo existente e prepare strings para processamento posterior.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a cópia de strings usando a função strcpy(). Seu programa deve:

  1. Ler um número inteiro n representando o número de operações de string a serem realizadas
  2. Para cada operação:
    • Ler uma string de origem (source) da entrada
    • Declarar um array de caracteres chamado destination com 100 elementos
    • Usar strcpy() para copiar a string de origem para o array de destino
    • Imprimir tanto a string de origem original quanto a string de destino copiada
  3. Após todas as operações, demonstrar que as strings copiadas são independentes:
    • Modificando o primeiro caractere do último array destination para 'X'
    • Imprimindo a string de destino modificada para mostrar que ela foi alterada

Lembre-se de incluir o cabeçalho <string.h> para usar a função strcpy().

Sua saída deve exibir os resultados no seguinte formato:

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

Por exemplo, se a entrada for:

3
hello
world
programming

Sua saída deve ser:

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

Este desafio testa sua compreensão sobre o uso de strcpy() para copiar conteúdos de strings de um array de caracteres para outro, a alocação de memória adequada para arrays de destino e demonstra que as strings copiadas são independentes de suas origens.

Folha de consulta

Para copiar strings em C, use strcpy() da biblioteca <string.h>. Você não pode usar o operador de atribuição (=) para copiar strings porque ele apenas copia endereços de memória, não o conteúdo real.

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

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

A função strcpy() recebe dois argumentos: o array de destino (para onde você deseja copiar) e a string de origem (o que você deseja copiar). Ela copia cada caractere da origem para o destino, incluindo o terminador nulo.

O array de destino deve ser grande o suficiente para conter toda a string de origem mais o terminador nulo para evitar comportamento indefinido.

Experimente você mesmo

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

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // TODO: Escreva seu código aqui
    // Use um loop para processar n operações de string
    // Para cada operação:
    // - Leia a string de origem (source)
    // - Use strcpy() para copiar a origem para o destino (destination)
    // - Imprima ambas as strings no formato exigido
    
    // TODO: Após o loop, modifique o primeiro caractere do último destino
    // e imprima a string modificada
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow