Felipe

Disponível somente no TrabalhosFeitos
  • Páginas : 4 (876 palavras )
  • Download(s) : 0
  • Publicado : 8 de novembro de 2011
Ler documento completo
Amostra do texto
Substituição de strings

Quando se trabalha com textos, é muito comum precisar-se substituir um trecho de uma string por outra, no entanto a biblioteca do padrão ANSI C não nos dá esterecurso, você nunca se perguntou porque? Pois bem, vou tentar lhe explicar em poucas palavras, caso você ainda não tenha descoberto.
Em primeiro lugar, quando se utiliza strings alocadasestaticamente, o espaço reservado para armazenar essas strings é limitado, por isso não se pode, por exemplo, escrever além desse espaço, que é reservado durante a compilação, se você quebrar essa regra, vocêpoderá estar escrevendo em um espaço reservado para outras variáveis do seu programa. Agora, quando se utiliza strings alocadas dinamicamente, tem se que tomar o cuidado de não exceder o espaço que foialocado sem realocar mais espaço, pois nem sempre a área que você está tentando escrever pertence ao seu programa.
Tendo isso em mente eu implementei as rotinas Replace e OptimizedReplace, querealizam esta tarefa sempre tendo o cuidado de não invadir áreas de memória que não lhes pertencem.
Observe que Replace sempre aloca uma nova cópia da string quando faz uma substituição, isso atorna um pouco lenta, principalmente para string grandes e que tem muitas repetições, já OptimizedReplace se preocupa em só realizar uma nova alocação quando o trecho que está sendo substituido formenor que a string pela qual ele vá ser substituido, isso também faz com que, além de mais rápida, não fragmente tanto a memória, um efetio colateral do excesso de alocações. Ambas as rotinas retornamuma cópia da string de entrada com as devidas alterações realizadas, mantendo-se assim os parâmetros de entrada intactos, uma observação importante, é que o seu programa deve desalocar a stringretornada por Replace e OptimizedReplace.
Com algumas poucas alterações pode se obter outras rotinas interssantes à partir destas duas, por exemplo, poderia-se modificá-las para que quando a string...
tracking img