Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilson Filho

[Resolvido] Falha de Segmentação em Ponteiros

Recommended Posts

Olá pessoal,

 

Eu estou revendo a linguagem C com o livro de Brian W. Kernithan e Denis Ritchie, e eles tem um seguinte exemplo no livro sobre ponteiros:

 

Exemplo do Livro

copia.h

/*strcpy: copia t para s*/
void strcpy(char *s,char *t)
{
    while(*s++ = *t++);
}

E com isso fui executar essa funcao em um main:

 

main.c

int main()
{
    char *vazio = '\0';
    char *preenchido = "Teste";

    //Invocando a funcao
    strcpy(vazio,preenchido);

    //Imprimindo o valor de vazio
    printf("Conteudo de Vazio: %s",vazio);

    return 0;
}

E o erro ocorrido é esse:

 

Saída da execução do binário

Falha de Segmentação(imagem do núcleo gravada)

Estou esquecendo alguma coisa para dar errado esse exemplo?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int main(){
    char *vazio = (char*) malloc (sizeof(char) * 10);
    char *preenchido = "Teste";
    memset(vazio, '\0', sizeof(vazio));
    strcpy(vazio,preenchido);
    printf("Conteudo de Vazio: %s",vazio);
    free(vazio);
    vazio = NULL;
    return 0;
}

aloque espaço para vazio ae q da certo ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int main(){
    char *vazio = (char*) malloc (sizeof(char) * 10);
    char *preenchido = "Teste";
    memset(vazio, '\0', sizeof(vazio));
    strcpy(vazio,preenchido);
    printf("Conteudo de Vazio: %s",vazio);
    free(vazio);
    vazio = NULL;
    return 0;
}

aloque espaço para vazio ae q da certo ;D

 

[]s

 

Obrigado cara.

Bom que agora vou estudar o memset e o free, :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.