Construa um programa que leia duas strings fornecidas pelo usuário e verifique se a segunda string lida esta contida no final da primeira, retornando o resultado da verificação.

Passo 1

O enunciado pede um programa que leia duas strings (chamadas aqui de str1 e str2) e verifique se str2 aparece como sufixo (no final) de str1. O conteúdo envolve manipulação de strings em C e o uso das funções da biblioteca <string.h>: strlen para obter tamanhos e strcmp (ou strncmp) para comparar sufixos.

Passo 2

Lemos as duas strings do usuário usando fgets para suportar espaços. Em seguida removemos o ‘\n’ final que o fgets inclui. Isso garante que as comparações de tamanho e caracteres sejam corretas.

Passo 3

Usamos strlen para obter len1 = comprimento de str1 e len2 = comprimento de str2. Se len2 for maior que len1, então str2 não pode caber no final de str1, logo já sabemos que não é sufixo.

Passo 4

Se len2 <= len1, fazemos uma comparação de sufixo: usamos strcmp(str1 + (len1 - len2), str2). O ponteiro str1 + (len1 - len2) aponta para o início do trecho final de str1 com o mesmo tamanho de str2. Se strcmp retornar zero, são iguais e, portanto, str2 é sufixo de str1.

Passo 5

Por fim, exibimos uma mensagem informando se a segunda string está ou não contida no final da primeira.

Resposta

#include <stdio.h>
#include <string.h>
int main() {
char str1[1000], str2[1000];
printf("Digite a primeira string: ");
if (fgets(str1, sizeof str1, stdin) == NULL) return 1;
str1[strcspn(str1, "\n")] = '\0';

printf("Digite a segunda string: ");
if (fgets(str2, sizeof str2, stdin) == NULL) return 1;
str2[strcspn(str2, "\n")] = '\0';

size_t len1 = strlen(str1);
size_t len2 = strlen(str2);

if (len2 > len1) {
    printf("A segunda string NÃO está contida no final da primeira.\n");
} else {
    if (strcmp(str1 + (len1 - len2), str2) == 0) {
        printf("A segunda string está contida no final da primeira.\n");
    } else {
        printf("A segunda string NÃO está contida no final da primeira.\n");
    }
}

return 0;
}

Exercícios relacionados