Boa tarde a todos. Queria acabar de resolver um programa mas me da um erro e não consigo corrigi-lo queria saber a vossa opinião em relação a isso. Vou passar o enunciado e depois o código que fiz para vocês saberem. Enunciado: Esta função substitui na string s a primeira ocorrência de old_s por new_s. As strings old_s e new_s podem ter comprimentos diferentes. Assume-se que o espaço de memória apontado por s é suficiente para armazenar o resultado final. A função retorna o ponteiro s caso tenha feito a substituição ou NULL se s não contém old_s. Código: #include <stdio.h>
char * strsubst(char * s, const char * old_s, const char * new_s)
{
char *aux=NULL;
int tamanhostring=40; // tamanho da string s;
int tamanho1=20; // tamanho da string old_s;
int i,j;
for(i=0; i <= tamanhostring; i++)
if(s[i] == *old_s)
*aux = i;
if(*aux)
{
for(j=0; j<tamanho1;j++)
s[(aux-s) + j] = new_s[j];
return (s);
}
else
return NULL;
}
int main()
{
char string[40],antiga[20],nova[20];
printf("\n");
printf("Entre com a string :");
gets(string);
printf("\n");
printf("Entre com a antiga palavra :");
gets(antiga);
printf("\n");
printf("Entre com a nova palavra :");
gets(nova);
printf("\n");
//printf("nova string ==> %s\n",strsubst(string,antiga,nova));
return(0);
} Erro: Segmentation fault Soluçao: Bem já tentei varias soluçoes mas não encontro onde ta o erro no main ele nem chega a escrever o ultimo printf que ta a comentario portanto o erro deve tar no outro metodo já alterei la muitas coisas mas não dá. Queria saber a vossa opinião e o que eu devo mudar no meu programa para atingir os objectivos.