olá
tem muito tempo que não posto nada aqui no blog e hoje estou postando, porque fiquei muito feliz!
não sei se alguem ja teve o mesmo problema que eu. Estou fazendo um trabalho onde tenho que alterar uma string no caso remover uma substring de uma string, bem isso é algo muito facio de se resolver utilizando java C# php javascript mas em C eu tive muitos problemas.
Bem espero poder ajudar alguem caso haja alguma algum problema parecido com o meu
abaixo estão os scripts para ser utilizado nos programas.
aqui tenho duas funções para mi ajudar a separar a substring da string maior
char *atribuirCharAUmAcha(char *s, const char *cs){
char *s1;
const char *cs1;
for(s1 = s,cs1 = cs; '\0' != (*s1 = *cs1); s1++,cs1++) ;
return s;
}
void removeSubString(char *src, char *sub){
char *p;
if ((p=strstr(src,sub)) != NULL)
atribuirCharAUmAcha(p,p+strlen(sub));
return;
}
está função eu utilizo no programa ou em uma função mais necessaria
aqui eu entro com a palavra(string) e remover(substring)
bem a utilização de recursividade é muito interessante mas em umas das minhas tentativas eu tive muito problema então utilizando um laço para efetuar minhas repetições
aqui no meu caso repeti porque eu necessito de retirar todas as substring da minha string por exemplo
tenha o meu nome
winicius e desejo retirar todos os i's
o resultado final é wncus
essa função tambem funciona no caso de substring maiores
123456123456 e desejo retirar 123
o meu resultado final é 456456.
o resultado final ou esperado e retornado por parametro com o ponteiro *palavra
e o valor de retorno inteiro é para controle
int removedorDeFrase(char *palavra, char *remover){
char *p;
char palavraArrumada[100];
char aux = "";
int resp = 1;
//o strstr() entraga da incidencia pra frente
//ou seja a string 123456 eu procuro por 4 ele entrega para o vetor 456
if ((p=strstr(palavra,remover)) != NULL){
//entra se tiver incidencia
//ele vai sair do se e continuar a trabalhar
}else{
return 2;
}
//chegou aqui é porque tem incidencia
//então trabalha
while(resp){
//não estou utilizando recursividade
//dentro loop eu reutilizo a função
removeSubString(palavra, remover);
if ((p=strstr(palavra,remover)) != NULL){
//aqui ele verifica se ainda existe incidencia
//se ele cair aqui ainda existe então continua no laço para remover proxima incidencia
}else{
//se entrar aqui significa que não existe mais incidencia
//ele sai do laço
resp = 0;
}
}
return 1;
}
espero que isso possa ajudar alguem!!!!!!
breve vou postar o codigo font do programa inteiro
tem muito tempo que não posto nada aqui no blog e hoje estou postando, porque fiquei muito feliz!
não sei se alguem ja teve o mesmo problema que eu. Estou fazendo um trabalho onde tenho que alterar uma string no caso remover uma substring de uma string, bem isso é algo muito facio de se resolver utilizando java C# php javascript mas em C eu tive muitos problemas.
Bem espero poder ajudar alguem caso haja alguma algum problema parecido com o meu
abaixo estão os scripts para ser utilizado nos programas.
aqui tenho duas funções para mi ajudar a separar a substring da string maior
char *atribuirCharAUmAcha(char *s, const char *cs){
char *s1;
const char *cs1;
for(s1 = s,cs1 = cs; '\0' != (*s1 = *cs1); s1++,cs1++) ;
return s;
}
void removeSubString(char *src, char *sub){
char *p;
if ((p=strstr(src,sub)) != NULL)
atribuirCharAUmAcha(p,p+strlen(sub));
return;
}
está função eu utilizo no programa ou em uma função mais necessaria
aqui eu entro com a palavra(string) e remover(substring)
bem a utilização de recursividade é muito interessante mas em umas das minhas tentativas eu tive muito problema então utilizando um laço para efetuar minhas repetições
aqui no meu caso repeti porque eu necessito de retirar todas as substring da minha string por exemplo
tenha o meu nome
winicius e desejo retirar todos os i's
o resultado final é wncus
essa função tambem funciona no caso de substring maiores
123456123456 e desejo retirar 123
o meu resultado final é 456456.
o resultado final ou esperado e retornado por parametro com o ponteiro *palavra
e o valor de retorno inteiro é para controle
int removedorDeFrase(char *palavra, char *remover){
char *p;
char palavraArrumada[100];
char aux = "";
int resp = 1;
//o strstr() entraga da incidencia pra frente
//ou seja a string 123456 eu procuro por 4 ele entrega para o vetor 456
if ((p=strstr(palavra,remover)) != NULL){
//entra se tiver incidencia
//ele vai sair do se e continuar a trabalhar
}else{
return 2;
}
//chegou aqui é porque tem incidencia
//então trabalha
while(resp){
//não estou utilizando recursividade
//dentro loop eu reutilizo a função
removeSubString(palavra, remover);
if ((p=strstr(palavra,remover)) != NULL){
//aqui ele verifica se ainda existe incidencia
//se ele cair aqui ainda existe então continua no laço para remover proxima incidencia
}else{
//se entrar aqui significa que não existe mais incidencia
//ele sai do laço
resp = 0;
}
}
return 1;
}
espero que isso possa ajudar alguem!!!!!!
breve vou postar o codigo font do programa inteiro
