Faça um programa que contenha um menu com as seguintes opçães:
Substituir a primeira ocorrência do caractere C1 da string S1 pelo caractere C2. Os caracteres C1 e C2 serão lidos pelo usuário;
Substituir a primeira ocorrência do caractere C1 da string S1 pelo caractere C2. Os caracteres C1 e C2 serão lidos pelo usuário;
Passo 1
O enunciado pede um programa em C que apresente um menu para o usuário e, numa das opções, leia uma string S1 e dois caracteres C1 e C2, substituindo na string apenas a primeira ocorrência de C1 por C2. O conteúdo principal é manipulação de strings em C, uso de laços (do/while, for), condicionais (if/switch) e funções de entrada/saída (printf, scanf, fgets).
Passo 2
Vamos estruturar o menu usando um laço do/while que se repete até o usuário escolher sair (opção 0). Dentro dele usamos switch para tratar cada escolha.
Passo 3
Para a opção de substituição, primeiro lemos a string S1 com fgets, removemos o ‘\n’ sobrando, e depois lemos C1 e C2 com scanf. Explicando: fgets lê até o ‘\n’ ou tamanho máximo, e scanf(" %c") ignora espaços em branco antes do caractere.
Em seguida usamos um laço for para percorrer S1 de índice 0 até o caractere terminal ‘\0’. A cada posição verificamos if(s1[i] == c1). Quando encontramos a primeira igualdade, atribuimos s1[i] = c2 e usamos break para sair do laço, garantindo que só a primeira ocorrência seja trocada.
Em seguida usamos um laço for para percorrer S1 de índice 0 até o caractere terminal ‘\0’. A cada posição verificamos if(s1[i] == c1). Quando encontramos a primeira igualdade, atribuimos s1[i] = c2 e usamos break para sair do laço, garantindo que só a primeira ocorrência seja trocada.
Passo 4
Após a substituição, imprimimos a string resultante com printf. Se o caractere C1 não existir em S1, o for termina sem alterar nada e exibimos S1 inalterada.
Passo 5
Por fim, fechamos o switch e repetimos o menu até opção 0. A opção 0 apenas exibe mensagem de saída e encerra o programa.
Passo 6
Segue o código completo em C:
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
int main() {
char s1[100];
char c1, c2;
int opcao;
char s1[100];
char c1, c2;
int opcao;
do {
printf("Menu:\n");
printf("1 - Substituir primeira ocorrencia de um caractere em S1\n");
printf("0 - Sair\n");
printf("Escolha uma opcao: ");
scanf("%d", &opcao);
getchar(); // consumir o '\n' deixado pelo scanf de opcao
switch (opcao) {
case 1:
printf("Digite a string S1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // remover o '\n' lido pelo fgets
printf("Digite o caractere C1: ");
scanf(" %c", &c1);
printf("Digite o caractere C2: ");
scanf(" %c", &c2);
for (int i = 0; s1[i] != '\0'; i++) {
if (s1[i] == c1) {
s1[i] = c2;
break; // substitui apenas a primeira ocorrencia
}
}
printf("String resultante: %s\n", s1);
getchar(); // consumir o '\n' antes de voltar ao menu
break;
case 0:
printf("Saindo...\n");
break;
default:
printf("Opcao invalida!\n");
break;
}
} while (opcao != 0);
return 0;
}