Função para remover Substring
Publicado por Thiago 25/06/2007
[ Hits: 12.142 ]
Considerem esta função em fase de teste.
Eu a considero em fase de teste, pois às vezes o programador
acha que testou todas as possibilidades de erro e vem um
péba e descobre um bug!
Se alguém (péba - brincadeirinha =) ) descobrir algum erro
ou tiver alguma sugestão para melhorar, me mande um e-mail.
:)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *remove_substr (char *string, char *substring);
int main (int argc, char *argv[])
{
char string[50];
char substring[50];
printf ("\nInforme uma string: ");
fflush (stdin);
fgets (string, 50, stdin);
/* scanf nao foi usado pois encerra ao encontrar um espaco o enter "\n".
Vou utilizar strings grandes. */
printf ("\nInforme uma substring: ");
fflush (stdin);
gets (substring);
/* Estou usando o gets pois ele nao coloca o caracter terminador de string
'{FONTE}' o que tornaria nossa substring diferente.
Por exemplo: string: thiago{FONTE}
substring: thi{FONTE}
A substring existente e thi.
Quero lembrar que o uso do gets nao e recomendado pois este nao verifica o tamanho da
string lida o que pode causar estouro de buffer.
Os caracteres excedentes podem sobrescrever certas areas da memoria ou tentar
(isso depende do Sistema Operacional em questao).
Quando pensar em uma forma de tirar o '{FONTE}' ai eu mudo o codigo. :) */
printf ("\nString alterada = %s\n", remove_substr (string, substring) );
return 0;
}
// Minha funcao para remover substring.
char *remove_substr (char *str, char *substr)
{
char *aux; // guarda o endereco da pos inicial de substr na str.
int tam;
register int i; // armazenado em registrador.
tam = strlen (substr); // armazena tamanho da substr.
aux = strstr (str, substr); // retorna endereco inicial da substr.
if (aux) // A substring esta contida na string? (endereco retornado?)
{
if (aux == str) // remove substring no inicio.
for (i = 0; i < tam; i++, ++str);
else
{
/* i guarda a posicao inicial da substring
tam e o tamanho do deslocamento (quantidade de caracteres apos
a substring). */
for (i = (aux - str); i < strlen(str); i++)
str[i] = str[i + tam];
}
return str;
}
else
return " ";
}
Operações de Soma, Subtração, Multiplicação e Divisão
Tipos de ordenação - BubbleSort - SelectSort - Shellsort - Mergesort
primeirafuncao.c - Criando uma função
Nenhum comentário foi encontrado.
Porque Gentoo semi-binário atualmente (desabafo)
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Como inserir letras de músicas no servidor Navidrome
Limpando avisos após Systemd-boot
Warsaw para Banco do Brasil no Archlinux
Capturando senha LDAP em texto claro e como proteger usando TLS no Samba 4
Cursor do mouse parou [RESOLVIDO] (7)
Preciso de ajuda com minha pesquisa sobre o Linux Mint (4)
Configuração resolução tela no zorn os 18 (1)









