【问题标题】:How to solve "Segmentation fault" error in C [duplicate]如何解决C中的“分段错误”错误[重复]
【发布时间】:2018-04-07 20:14:12
【问题描述】:

我不是 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 中,但是当我尝试这样做时,出现了错误。

谢谢!

【问题讨论】:

  • evt.tema = strdup(tema)

标签: c


【解决方案1】:
char* tipo; 
char* tema;
char* valor;

那些 char* 需要内存。

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

当您不再需要它们时,不要忘记free()他们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多