구조체에 문제가 있습니다. 자체에 대한 포인터가있는 구조체를 사용해야합니다. 나는이 일을하고 난 작동 생각 :C 자체에 대한 포인터가있는 C 구조체 - 값 액세스
typedef struct tag_t tag_t;
struct tag_t{
char name[15];
int is_self_closing;
tag_t *child;
};
내가 너무 내 프로그램 코어 덤프와의 HTML 태그의 자식 "몸"과 같은 태그에 아이를 추가하는 기능을하고있다 자식 포인터의 "name"및 "is_self_closing"변수를 사용하려고 할 때 세그멘테이션 오류가 발생했습니다. 나는 그들에게 정확하게 접근하는 방법을 모른다. 이것은 프로그램의 전체 코드입니다. 당신의 add_chilld()
기능 내부
#include <stdio.h>
#include <string.h>
typedef struct tag_t tag_t;
struct tag_t{
char name[15];
int is_self_closing;
tag_t *child;
};
void add_chilld(tag_t *,char[15],int);
void print_markup(tag_t);
int main(int argc, char **argv){
tag_t parent,child;
strcpy(child.name,"body");
child.is_self_closing = 1;
strcpy(parent.name,"html");
parent.is_self_closing = 0;
add_chilld(&parent,child.name,child.is_self_closing);
printf("child name = %s child closing = %d\n",child.name,child.is_self_closing);
printf("%s %d %s\n",parent.name,parent.is_self_closing,parent.child->name);
return 0;
}
void add_chilld(tag_t *parent,char name[15],int is_self_closing){
if(is_self_closing == 1){
printf("parent name = %s\n",parent->child->name);
strcpy(parent->child->name,name);
parent->child->is_self_closing = is_self_closing;
}else{
parent->child = NULL;
}
}
스택 오버플로에 오신 것을 환영합니다! 지금까지 연구/디버깅 노력을 친절하게 보여주십시오. 먼저 [Ask] 페이지를 읽으십시오. –
a) 부모 이름으로 자녀의 이름을 지정하기 전에 자녀의 이름을 인쇄하고 있습니다. b) 자식 포인터가 아무 것도 가리키고 있지 않습니다. c)'char name [15]'는 당신이 생각하는대로하지 않습니다. –