2017-12-16 14 views
0

最後に追加の要素を挿入し、特定の要素を見つけ、要素を削除してリストを作成します。しかし、私はリスト自体(と入力)に問題があります。 リストを作成してその要素を印刷するときにエラーが発生する

これは私の実際のコードです。私はあなたにそれをより読みやすくするためにいくつかの機能を削除しました。複数の要素は、プログラムがクラッシュプログラムの開始時または挿入追加の要素の間に作成され、エラーを与えるさ

http://codepad.org/dTGjtYRx

スレッド1:EXCBADACCESS(コード= EXCI386GPFLT)

リストが印刷されるときには何かがあります。例えば、 '\'は\ - '\ 360-`のような奇妙な組み合わせの文字/数字で表示されます。

答えて

0

この

ListElement *e = malloc(sizeof(Book)); 

はそれに変更する必要があります。

ListElement *e = malloc(sizeof(ListElement)); 

また、すべての配列は文字列の終端文字を維持するためにサイズ[51]のものでなければなりません。

+0

ありがとうございました。私はmallocにこのような欠陥があることをどうやって認識していないのか分かりません。しかし、私は文字で物事を得ることはありません。何が問題ですか? –

+0

'c'の実際の文字列の長さは、 '\ 0'終端文字があるため、strlenが返す文字列より常に1文字長くなります。あなたの文字列を '50'の長さのチェックとしてコピーすると、実際には最大サイズに合わせて51文字の配列が必要になります。配列の最後の要素が常に '\ 0'であることも確認する必要があります。 – Serge

関連する問題