Menu
Coddy logo textTech

Usando strcat()

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

Você aprendeu como copiar strings com strcpy(), mas e se você quiser juntar duas strings? Isso é chamado de concatenação, e a linguagem C fornece a função strcat() da biblioteca <string.h> para esse propósito.

A função strcat() anexa o conteúdo de uma string ao final de outra string. Ela recebe dois argumentos: a string de destino (que será modificada) e a string de origem (que será adicionada ao final).

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting agora contém "Hello World"

É crucial que sua string de destino tenha espaço suficiente para conter tanto o conteúdo original quanto o novo conteúdo que está sendo anexado. A função strcat() encontra o terminador nulo na string de destino, remove-o, copia a string de origem para esse local e adiciona um novo terminador nulo no final.

Às vezes você precisa concatenar um número (como um int) a uma string. Como strcat() funciona apenas com arrays de caracteres, primeiro você precisa converter o número em uma string. Você pode fazer isso com sprintf(), que funciona exatamente como printf(), mas escreve o resultado formatado em um array de caracteres em vez de imprimi-lo na tela. sprintf() faz parte de <stdio.h>, que já está incluído na maioria dos programas em C.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr agora contém "42" como uma string

Assim que o número estiver armazenado como uma string em numStr, você pode usar strcat() para anexá-lo a outra string como de costume:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary agora contém "Total people processed: 3"

Esta função é essencial para construir strings mais longas a partir de pedaços menores, como criar frases completas a partir de palavras individuais ou combinar a entrada do usuário com texto predefinido.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a concatenação de strings usando a função strcat() para construir mensagens personalizadas. Seu programa deve:

  1. Ler um número inteiro n representando a quantidade de pessoas a serem processadas
  2. Para cada pessoa:
    • Ler o primeiro nome da entrada
    • Ler o sobrenome da entrada
    • Criar um array de caracteres chamado fullName com 100 elementos
    • Usar strcpy() para copiar o primeiro nome para fullName
    • Usar strcat() para anexar um único espaço " " a fullName
    • Usar strcat() para anexar o sobrenome a fullName
    • Criar um array de caracteres chamado greeting com 150 elementos
    • Usar strcpy() para copiar "Hello, " para greeting
    • Usar strcat() para anexar o fullName a greeting
    • Usar strcat() para anexar "! Welcome to our program." a greeting
    • Imprimir a mensagem de saudação final
  3. Após processar todas as pessoas, criar uma mensagem de resumo:
    • Criar um array de caracteres chamado summary com 100 elementos
    • Usar strcpy() para copiar "Total people processed: " para summary
    • Converter o número n para uma string e usar strcat() para anexá-lo a summary
    • Imprimir a mensagem de resumo

Lembre-se de incluir o cabeçalho <string.h> para usar as funções de string.

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

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Por exemplo, se a entrada for:

2
John
Doe
Alice
Smith

Sua saída deve ser:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Este desafio testa sua compreensão do uso de strcat() para concatenar várias strings, combinando-o com strcpy() para a configuração inicial da string e construindo strings complexas a partir de múltiplos componentes passo a passo.

Experimente você mesmo

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

int main() {
    // Leia o número de pessoas
    int n;
    scanf("%d", &n);
    
    // TODO: Escreva seu código abaixo
    // Processe cada pessoa e crie mensagens de saudação
    // Em seguida, crie e exiba a mensagem de resumo
    
    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