如何解决"分段故障" C中的错误

时间:2018-04-07 20:14:12

标签: c

我不是C的专家,事实上,我讨厌它,但我必须在这个语言中为我的大学做这个项目。好吧,当我去测试我的代码时,我对这个错误感到惊讶,"分段错误"。我正在寻找互联网和阅读有同样问题的人,我无法解决它。

所以,这是我的代码:

typedef struct evento{
    char* tipo; //baja, alta o evento
    char* tema; //tema al que pertenece
    char* valor;
    int puerto;
    struct sockaddr_in *dir;
}evento;

int generar_evento(const char *tema, const char *valor) {

//Socket()

int sock;

sock = socket(AF_INET, SOCK_STREAM, 0);

if (sock < 0){
perror("Error en socket() en Editor");
exit(1);
}

//Preparar mensaje

evento evt;
strcpy(evt.tipo, "evento");
strcpy(evt.tema, tema);
strcpy(evt.valor, valor);

代码如下,但并不重要,因为我正在测试它,错误在:

evento evt;
strcpy(evt.tipo, "evento");
strcpy(evt.tema, tema);
strcpy(evt.valor, valor);

我需要将generar_evento的参数(const char *tema, const char *valor)复制到struct evento中,但当我尝试这样做时,会出现错误。

谢谢!

1 个答案:

答案 0 :(得分:0)

char* tipo; 
char* tema;
char* valor;

那些char *需要记忆。

给他们一些malloc(strlen("the string you want to cpy") + 1);

当你不再需要它们时,别忘了free()