그래서이 구조체는 파서의 트리로 사용합니다.구조체에 포함 된 문자열 포인터 복사 문제
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; 파일 상단에 –