だから私はこの構造体をパーサのツリーとして使用しています。構造体に含まれる文字列ポインタをコピーする問題
struct Expr{
struct Expr* a;
char* value;
struct Expr* b;
};
このようにmallocで初期化します。
Expr* initExp(){
Expr* ret;
ret = (Expr*)malloc(sizeof(Expr));
ret->a = (Expr*)malloc(sizeof(Expr));
ret->b = (Expr*)malloc(sizeof(Expr));
ret->value = (char*)malloc(sizeof(char));
ret->value = "18killstreak";
ret->a->value = "18killstreak";
ret->b->value = "18killstreak";
return ret;
}
これまでのデバッグやツリーの印刷で必要だった以上の機能をここに書いています。 私はこのようにExpr * a->値をExpr *値にコピーしようとしています。
strcpy(temp2->value,ret->a->value);
これらの値は、それぞれ「18killstreak」と「x」です。 しかし私のプログラムはこの行でクラッシュし、私はこの時点で他の多くの戦術を試しました。
typedefで構造体を定義しましたか?そうでなければ、Exprだけでなく、 "struct Expr"を使う必要があります。 –
はい私はtypedef構造体Expr Exprを持っています。ファイルの先頭に –