2016-12-01 12 views
0

私はリンクリストを使用してバイナリ検索ツリーを構築しようとしています。私のリンクされたリストの私の構造体は:リンクリストノード内の文字配列を読み取るか?

typedef struct node{ 
    char english[20]; 
    char span[60]; 
    struct node *left; 
    struct node *right; 
} BST; 

私はそれを変更するには、ノード内のchar配列にアクセスするのですか?私が文字english[]を持っていて、それをノード内の配列にコピーしたいとしたらどうしますか?私はこれらの行を使用しましたが、それが正しいかどうかはわかりません。

int counter = 0; 
    while(array[counter] != ' ') 
    { 
     node.english[counter] = array[counter]; 
     counter++; 
    } 

フィードバックは高く評価されます。

+0

'node'は何ですか?そして、それをビルドしようとしましたか?コンパイラはあなたに何を伝えますか? [ラバーダック](https://en.wikipedia.org/wiki/Rubber_duck_debugging)はあなたに何を教えてくれるのですか? –

答えて

1

私はnodeがタイプBST *であると思います。そのような場合は、->でアクセスしてください。以下のような

何か:

int counter = 0; 
while(array[counter] != ' ') 
{ 
    node->english[counter] = array[counter]; 
    counter++; 
} 

は、この解決策の問題は、それが保護されていないということです。配列が英語のメンバーより長い場合は、バッファオーバーフローが発生する可能性があります。また、英語で取得した文字列はnullで終了しないことがあります。

strlcatライブラリ関数を使用してみてください:

strlcat(node->english, array, sizeof(node->english); 
関連する問題