構造体に問題があります。自分自身へのポインタを持つ構造体を使用する必要があります。私はこれを行っていると私はそれがうまくいくと思う: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]'はあなたが思っていることをしません。 –