繁体   English   中英

C程序,printf char *崩溃

[英]C program, printf char* crashes

我有一个由char*和许多属性组成的结构。

我无法将char*打印为字符串 ,它会崩溃。

这是我的代码:

int main() {
    sommet_t* sommet = creerSommet("rouge", 5, NULL);
    printf("Couleur : %s", sommet->couleur);
    return 0;
}

还有我的sommet.c:

sommet_t* creerSommet(char* couleur, int distance, sommet_t* pere) {
    sommet_t* sommet =  malloc(sizeof(sommet_t));
    sommet->distance = distance;
    sommet->couleur = (char*)malloc((strlen(couleur)+1) * sizeof(char));
    strcpy(sommet->couleur,couleur);
    sommet->pere = pere;
}

我绝对不知道这是怎么回事。

编辑:sommet.h

#ifndef __SOMMET_H__
#define __SOMMET_H__

typedef struct sommet_type {
    char *couleur;
    int distance;
    struct sommet_type *pere;
} sommet_t;

sommet_t* creerSommet(char*, int, sommet_t*);

#endif

您应该从函数creerSommet返回对象

sommet_t* creerSommet(char* couleur, int distance, sommet_t* pere) {
    sommet_t* sommet =  malloc(sizeof(sommet_t));
    sommet->distance = distance;
    sommet->couleur = (char*)malloc((strlen(couleur)+1) * sizeof(char));
    strcpy(sommet->couleur,couleur);
    sommet->pere = pere;
    return sommet;
}

您忘记了从函数返回sommet

FWIW,任何期望返回一些值的函数,如果不return值,并且该返回值在调用方中使用,它将调用未定义的行为

引用C11 ,第§6.9.1章, 函数定义

如果到达终止函数的} ,并且调用者使用了函数调用的值,则该行为未定义。

那就是

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM