Faça um programa que contenha um menu com as seguintes opçães:
Comparar a string S1 com uma nova string S2 fornecida pelo usuário e imprimir o resultado da comparação;

Passo 1

A questão pede um programa em C que exiba um menu com a opção de comparar uma string S1 pré-lida com uma nova string S2 fornecida pelo usuário e imprimir se são iguais, ou se S1 é lexicograficamente menor ou maior que S2. Vamos usar manipulação de strings (fgets, strcmp) e estruturas de controle (do-while, switch).

Passo 2

Declaramos dois vetores de char com tamanho suficiente para S1 e S2 (por exemplo 100) e uma variável int para guardar a opção do menu. Incluímos <stdio.h> e <string.h>.

Passo 3

Lemos a string S1 no início do programa usando fgets(s1, 100, stdin) e removemos o caractere de nova linha final com s1[strcspn(s1,"\n")] = ‘\0’. Isso evita que o ‘\n’ interfira na comparação.

Passo 4

Construímos um loop do-while que exibe o menu repetidamente até o usuário escolher a opção de sair (por exemplo, 0). Dentro do loop, imprimimos as opções e usamos scanf("%d%*c", &opcao) para ler a escolha, consumindo o ‘\n’.

Passo 5

No switch(opcao), tratamos o caso 1: pedimos a string S2, novamente com fgets(s2,100,stdin) e removemos o ‘\n’. Em seguida, usamos strcmp(s1, s2) para comparar.

Passo 6

Interpretamos o valor retornado por strcmp: se for 0, imprimimos “As strings sao iguais”; se for menor que 0, “S1 e menor que S2”; se for maior que 0, “S1 e maior que S2”.

Passo 7

No case 0, apenas imprimimos uma mensagem de encerramento e saímos do loop. No default, avisamos sobre opção inválida.

Passo 8

Após o loop, retornamos 0 para indicar que o programa terminou normalmente.

Resposta

#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
int opcao;
// Leitura de S1
printf("Digite a string S1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0';

do {
    // Exibição do menu
    printf("\nMenu:\n");
    printf("1 - Comparar S1 com uma nova string S2\n");
    printf("0 - Sair\n");
    printf("Escolha uma opcao: ");
    scanf("%d%*c", &opcao);

    switch (opcao) {
        case 1:
            // Leitura de S2
            printf("Digite a string S2: ");
            fgets(s2, sizeof(s2), stdin);
            s2[strcspn(s2, "\n")] = '\0';

            // Comparação
            if (strcmp(s1, s2) == 0) {
                printf("As strings sao iguais\n");
            } else if (strcmp(s1, s2) < 0) {
                printf("S1 e menor que S2\n");
            } else {
                printf("S1 e maior que S2\n");
            }
            break;

        case 0:
            printf("Encerrando o programa...\n");
            break;

        default:
            printf("Opcao invalida. Tente novamente.\n");
    }
} while (opcao != 0);

return 0;
}

Exercícios relacionados