0

私はこの質問と同じプロジェクトに取り組んでいますが、typedefが少し異なります。

typedef struct {
    char* word;
    int index;
} data_t;

typedef struct node node_t;

typedef node {
    void *data;
    node_t *left;
    node_t *right;
}

文字列を個々の単語に分割し、それをdata_t構造体に貼り付けてから、バイナリ検索ツリーに挿入しようとしています。入力文字列をループしているときに、その文字が単語の終わりを示す文字であることがわかった場合、単語の最初と最後の間の文字数が文字列にコピーされるという考え方です。以下を使用して実行しようとしました:

strncpy(newstring, (in+wordstart), (i-wordstart));

どこ:

char* newstring, in;
int i, wordstart;

ただし、その特定の回線が呼び出されると、gccはバスエラーを発生させます。このバスエラーをどのように修正し、現在の解決策を維持することができますか、それとも別の解決策を探す方が賢明ですか?

私がこれまでに考えた唯一のアイデアは、一度に1文字ずつ、単語の終わりに達するまで文字を文字列に入れることです。

4

2 に答える 2

4

これは2つのポインタを宣言していません。これは1つのポインタと1つの文字だけです。

char* newstring, in;

次のように宣言する必要があります。

char *newstring, *in;

また、他の誰かが指摘したように、それらのポインタにメモリを割り当てているようには見えません。

于 2012-10-23T07:50:40.497 に答える
1

これ:

typedef node {
    void *data;
    node_t *left;
    node_t *right;
}

まったく意味がありません。structの前にキーワードがなくnode、導入しようとしている型エイリアスの名前が の後に}なく、終端のセミコロンもありません。これはコンパイルされるべきではありません。

于 2012-10-23T08:07:55.113 に答える