私はchar*
と多くの属性で構成される構造を持っています。Cプログラム、printf 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
追加ポスト –
'はsizeof(文字)' 'で(CHAR *)はmalloc((strlenを(クルール)で+1)*はsizeof (char)); 'は冗長で不要です。 –
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –