Localhost 3 Denunciar mensagem Publicado 28 de Março de 2010 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 0 Denunciar mensagem Publicado 28 de Março de 2010 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 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Localhost 3 Denunciar mensagem Publicado 28 de Março de 2010 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
Peterv5 0 Denunciar mensagem Publicado 28 de Março de 2010 No final podes copiar o que tens na auxiliar para a original e ficas com o problema resolvido. Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
TheDark 0 Denunciar mensagem Publicado 29 de Março de 2010 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
Localhost 3 Denunciar mensagem Publicado 29 de Março de 2010 Obrigado pelo contributo TheDark here since 2009 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites