Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Dúvidas de C (Eclipse)
14-10-2009, 01:15 (Esta mensagem foi modificada pela última vez a: 15-10-2009 10:23 por rei007.)
Mensagem: #4
RE: Dúvidas de C (Eclipse)
Peço imensa desculpa pelo transtorno mas a verdade é que não tinha testado strings com espaços.

A função continua correcta. O problema estava em como eu obtinha os dados no scanf.

Aqui tem a versão correcta. Experimente e dê-me o seu feedback.
Código:
#include <stdio.h>
#include <string.h>

char *removerCaracteres(char *stringParaTratar, char caracterParaRemover);

void main(void)
{
     char stringParaTratar[80];
     char *stringTratada;
     char caracterParaRemoverNaString;
    
     printf("Introduza a sua string: ");
     fflush(stdin);
     scanf("%[^\n]",stringParaTratar); //erro estava aqui
    
     printf("\n\nIntroduza o caracter que quer remover da string: ");
     fflush(stdin);
     scanf("%c",&caracterParaRemoverNaString);
    
     stringTratada = removerCaracteres(stringParaTratar,caracterParaRemoverNaString);
    
     printf("\n\nA sua string original era: %s", stringParaTratar);
     printf("\nA sua string tratada e: %s", stringTratada);
    
     fflush(stdin);
     getchar();
}

char *removerCaracteres(char *stringParaTratar, char caracterParaRemover)
{
     char *stringParaDevolver;
    
     size_t tamanhoDaString;
    
     int i;
     int j;
    
     tamanhoDaString = 0;
     i=0;
     j=0;
     stringParaDevolver = NULL;
    
     tamanhoDaString = strlen(stringParaTratar);//vê a quantidade de caracteres da string

     stringParaDevolver = (char *) malloc( sizeof( char ) * tamanhoDaString + 1 ); //Alocar memória

     memset( stringParaDevolver, 0x00, sizeof( char ) * tamanhoDaString + 1 );//Inicialização de uma secção de memória
    
     for(i=0; i<tamanhoDaString; i++)
     {
              if(stringParaTratar[i]!=caracterParaRemover)//Se o caracter da string for diferente do caracter a remover coloca numa nova string, caso contrário remove
              {
                      stringParaDevolver[j] = stringParaTratar[i];
                      j++;
              }
     }
    
     return (stringParaDevolver); //devolve o valor da nova string sobre o formato de ponteiro
}

Cumps,
Manuel Rocha

[Imagem: pplware_staff.png]
Licenciado em Informática para a Saúde pela ESTG Leiria
Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense
Especialização em Design Gráfico
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Mensagem neste Tópico
Dúvidas de C (Eclipse) - Pirotas - 13-10-2009, 22:02
RE: Dúvidas de C (Eclipse) - rei007 - 13-10-2009, 23:41
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 00:25
RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009 01:15
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 10:38
RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009, 10:48
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 12:01
RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009, 12:34
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 16:31
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 22:26
RE: Dúvidas de C (Eclipse) - dingas - 14-10-2009, 16:47
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 16:58
RE: Dúvidas de C (Eclipse) - rei007 - 15-10-2009, 10:20
RE: Dúvidas de C (Eclipse) - dingas - 14-10-2009, 21:42
RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009, 22:46
RE: Dúvidas de C (Eclipse) - dingas - 16-10-2009, 12:32
RE: Dúvidas de C (Eclipse) - Pirotas - 15-10-2009, 10:37

Saltar Fórum:


Utilizadores a ver este tópico: 2 Visitante(s)