Boas,
Vê se isto te ajuda. Fiz esse trabalhinho para si e testei. No meu computador funcionou mas tive de fazer em windows 7 com visual studio 8 num compilador de C++. Não sei se vai funcionar nos seus requesitos. Experimenta e depois diz algo.
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("%s",&stringParaTratar);
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
}