質問: C言語で、マージソートを構造体で実行したいです。書いてみたコードを以下に書きます。
回答: ご自身でも書いているように、buffer を構造体に入れるのはおかしいので、ダメな原因をはっきりしたほうが良いと思います。 また、malloc も闇雲に大きく取っていますが必要なサイズをとればよいです。 (sizeof(int)もおかしいですが)。 ただ、今回数値を取り扱うので整数配列で十分ですが、構造体を使う目的は何でしょうか。 まずはこのあたりを説明したほうが良いと思います。 とりあえず、文法的におかしい部分や、修正したほうが良い点だけ下記に記載します。 scanf("%d", &count); element_list = (element *)malloc(count * sizeof(element)); _mergesort 関数内の element *buff; は関数内の変数なので、mergesort 関数内で宣言した buff 変数とは別物です。 関数内でメモリ確保し、使用後開放するように変更したほうが良いです。 そのあたりを整理すれば、mergesort と _mergesort を二つにする必要はなくなります。