Ir ao conteúdo

Posts recomendados

Postado

Olá,

Estou treinando linguagem C e me deparei com um exercício de strings que eu não consegui resolver. E na apostila que tenho não há essa informação.

 

Exercício:

Faça um programa que receba uma frase e uma palavra. Caso a frase contenha a palavra ESCOLA, substitua pela palavra digitada.

Exemplo:

  • Frase: Eu moro perto de uma escola. Mas essa escola não é a melhor.
  • Palavra: padaria
  • Resposta: Eu moro perto de uma padaria. Mas essa padaria não é a melhor.
Postado

@Dodovoisg A função strstr() retorna um ponteiro para a primeira ocorrência de str2 em str1. O protótipo:

char* strstr(const char* str1, const char* str2);

Um loop com essa função deve fazer o que você precisa. Se o ponteiro retornado for nulo, então str2 não faz parte de str1, e aí seu loop deve terminar.

Para substituir a string escola pela string padaria, talvez a função strncpy() sirva.

  • Curtir 1
Postado
4 horas atrás, Dodovoisg disse:

Estou treinando linguagem C e me deparei com um exercício de strings que eu não consegui resolver. E na apostila que tenho não há essa informação

 

 

4 horas atrás, Dodovoisg disse:

Faça um programa que receba uma frase e uma palavra. Caso a frase contenha a palavra ESCOLA, substitua pela palavra digitada


Não há uma "informação" desse tipo. Apenas entenda que uma string é uma sequência de letras terminada por um zero. E você tem duas strings. O enunciado é muito vago e não fica claro se pode usar funções de biblioteca para isso, como strstr() ou strcpy() ou tudo que tem em string.h. Também não dá para saber o que sabe escrever em C, se sabe escrever funções por exemplo...

 

Recomendo muito que consiga um ou dois livros sobre a linguagem. E um site de referência por exemplo, onde pode conseguir pequenos programas de exemplo. E escreva pequenos programas para ir entendendo e vendo o seu próprio progresso. Veja por exemplo sobre strstr() aqui e aqui e verá que tem programas pequenos bem simples de exemplo. 

 

Todo mundo faz isso, imagino.

 

Escreva seu programa em torno dos dados. Sempre. E planeje antes.

 

Exemplo: o seu enunciado e ESTE programa
 

#include "stdio.h"

int main(void)
{
    //const char* frase = "Eu moro perto de uma escola";
    const char* frase = "Eu moro perto de uma esquina";
    //const char* frase = "Eu moro perto de uma esquina e ao lado da escola";

    const char* alvo = "escola";
    const char* palavra = "padaria";

    printf("\
\n\tTrocando '%s' por '%s' em\
\n\t'%s'\n\n",
alvo, palavra, frase);
    return 0;
}

 

Que mostra
 


        Trocando 'escola' por 'padaria' em
        'Eu moro perto de uma escola'

 

Pra que serve essa b0b@g3m?

 

Esse programa por exemplo já estabelece a nomenclatura, usando os nomes do próprio enunciado. E já tem 3 frases importantes lá, em comentário:

  • a própria frase do exemplo,
  • uma parecida que não tem a palavra procurada, e
  • outra que tem a palavra mas tem um falso positivo: "esquina" começa como "escola". E depois um positivo no final.

Se seu programa funcionar com essas 3 tem boa chance de funcionar no geral... E já tem um mecanismo para testar. O próximo caso seria claro com palavras de uma letra só ou strings vazias.

 

De volta ao programa:

 

Não precisa de fato de função nenhuma. Apenas percorrer a entrada letra a letra como faria com um papel e lápis. 

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!