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 ao final.

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.

Às vezes você precisa converter um número em uma string antes de poder concatená-lo. Para isso, você pode usar sprintf() de <stdio.h> (que já está incluído na maioria dos programas C). sprintf() funciona exatamente como printf(), mas em vez de imprimir na tela, ele escreve o resultado formatado em um array de caracteres (char array).


Por exemplo, para converter um inteiro em uma string:

int age = 25;
char ageStr[10];
sprintf(ageStr, "%d", age);  // ageStr agora contém "25"

char result[30] = "Age: ";
strcat(result, ageStr);       // result agora contém "Age: 25"

O primeiro argumento para sprintf() é o array de caracteres de destino, o segundo é a string de formato (usando os mesmos especificadores de formato que printf()), e os argumentos restantes são os valores a serem inseridos.
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 (first name) da entrada
    • Ler o sobrenome (last name) 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 " " ao fullName
    • Usar strcat() para anexar o sobrenome ao fullName
    • Criar um array de caracteres chamado greeting com 150 elementos
    • Usar strcpy() para copiar "Hello, " para greeting
    • Usar strcat() para anexar o fullName ao greeting
    • Usar strcat() para anexar "! Welcome to our program." ao 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 ao 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.

Folha de consulta

A função strcat() de <string.h> concatena (une) duas strings anexando a string de origem ao final da string de destino.

Sintaxe: strcat(destination, source)

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

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

Importante: A string de destino deve ter espaço suficiente para conter tanto o conteúdo original quanto o conteúdo anexado. A função encontra o terminador nulo no destino, remove-o, copia a string de origem para esse local e adiciona um novo terminador nulo ao final.

A função sprintf() de <stdio.h> funciona como printf(), mas escreve o resultado formatado em um array de caracteres (string) em vez de imprimi-lo. Isso a torna útil para converter inteiros (ou outros valores) em strings.

Sintaxe: sprintf(destination, format, value)

#include <stdio.h>

int num = 42;
char numStr[10];
sprintf(numStr, "%d", num);  // numStr agora contém "42"

Importante: O array de destino deve ser grande o suficiente para conter a string resultante, incluindo o terminador nulo.

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