C - How to remove a word from a String

Asked

Viewed 94 times

0

So, I have to remove a word from a String, already add with this code:

printf("Digite o nome: \n");
scanf("%s", &temporaryVector);
getchar();
lettersName = strlen(temporaryVector);
temporaryVector[lettersName] = ';';
temporaryVector[lettersName + 1] = '\0';
lettersName = lettersName + 2;

name = (char*)malloc(sizeof(char) * (lettersName));

if (!name) {
    printf ("Erro, não foi possível alocar espaco.");
    return -1;
}

strcpy (name, temporaryVector);

oldSize = lettersName + oldSize;

firstAcess++;
} else {
printf("Digite o nome: \n");
scanf("%s", &temporaryVector);
getchar();
lettersName = strlen(temporaryVector);
temporaryVector[lettersName] = ';';
temporaryVector[lettersName + 1] = '\0';
lettersName = lettersName + 2;

oldSize = lettersName + oldSize;

name = (char*)realloc(name, oldSize);

if (!name) {
    printf ("Erro, não foi possível alocar espaco.");
    return -1;
}

strncat (name, temporaryVector, oldSize);
printf("%s\n", name);
}

At the end of each word I add one ; to separate. I just don’t know how to delete a specific word now.

  • the answer is good, but to score.. you pasted one else right after the line of firstAcess++;.. that else is lost (not associated with a if); would probably have build error

1 answer

2

I made a small example with the implementation of the method to remove a word from a sentence. I hope it helps.

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

//assinatura do metodo
void remove_palavra(char * frase, char * palavra);

int main()
{
    char * frase = (char*)malloc(sizeof(char) * 100);
    char * palavra = (char*)malloc(sizeof(char) * 20);
    
    //Frase de onde queremos remover a palavra
    strcpy(frase  , "Teste para remover uma palavra da frase."); 

    //palavra que queremos remover da frase
    strcpy(palavra, "palavra "); 

    printf ("Remover a palavra'%s' da frase: '%s'\n\n", palavra, frase);

    remove_palavra(frase, palavra);
    
    printf ("Frase sem a palavra:'%s'\n", frase);
}


void remove_palavra(char * frase, char * palavra)
{
    int tamanhoFrase = strlen(frase);
    int tamanhoPalavra = strlen(palavra);
    
    // dá um ponteiro para o inicio da palavra
    char * ponteiro = strstr(frase, palavra);
    if(ponteiro)
    {
        //dá a posicao da palavra na frase original
        int posicao = (ponteiro - frase);

        //Incrementamos o ponteiro para ir para o fim da palavra procurada
        ponteiro = ponteiro + tamanhoPalavra;                
        
        //percorremos a frase e copiamos caracter a caracter do fim da apalavra para a posicao do incio da palavra
        int i;
        for(i = 0; i < strlen(ponteiro); i++)
            frase[posicao + i] = ponteiro[i]; 

        //A frase agora tem que terminar mais cedo                
        frase[posicao + i] = 0;      
    }   
}

OUTPUT

Remover a palavra'palavra ' da frase: 'Teste para remover uma palavra da frase.'

Frase sem a palavra:'Teste para remover uma da frase.'

Browser other questions tagged

You are not signed in. Login or sign up in order to post.