Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Localhost

Destruir caracteres especiais

Mensagens Recomendadas

Localhost

Alguém conhece alguma função que dada uma string consegue tirar-lhe todos os caracteres tipo "` . - {"?

Ou alguém conhece uma maneira eficiente de o fazer sem termos de andar a "arrastar" tudo para baixo para a posição em que se encontra o caracter?


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zecapistolas

Não entendi o que querias dizer com "arrastar tudo para baixo".... Mas o que eu faria era percorrer essa string e através do código ASCII do carácter verificava se era ou não especial, ia copiando para uma string nova sem esses caracteres especiais.

Tipo:

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

int main (int argc, char *argv[])
{
char *str_velha = "olá mundo....{!:@\0";
char *str_nova = (char *) calloc(50, sizeof(char));

printf("Velha: %s", str_velha);

int j = 0;
while (*str_velha != '\0')
{
	if ( (((int)*str_velha >= 48) && ((int)*str_velha <= 57)) ||	// numeros
			(((int)*str_velha >= 65) && ((int)*str_velha <= 90)) ||	// letras GRANDES
				(((int)*str_velha >= 97) && ((int)*str_velha <= 122)) ||	// letras pequenas
					((int)*str_velha == 32) ) // espaço
	{
		str_nova[j] = *str_velha;
		j++;
	}

	str_velha++;
}

printf("\nNova: %s\n", str_nova);

return 0;
}

cumps  :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

O que queria dizer era que se ficasse com a mesma string eu ao "apagar" o caracter especial da string tinha de meter todos os outros uma posição abaixo para o caracter especial desaparecer e para não ficar com nenhuma letra repetida.

Não queria ter uma string auxiliar mas pronto. Deixa lá.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

Podes fazer isso percorrendo a string uma única vez, e sem strings auxilizares. Precisas de um contador, que inicia a zero; percorres a string, e para cada um dos caracteres:

- se for um dos "especiais", incrementas o contador;

- caso contrário, se o contador for maior que 0, copias para (posição actual - contador).


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.