• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のソートについて)

C言語のソートについて

このQ&Aのポイント
  • C言語でファイルの中身を昇順と降順で出力する際にソートがうまくいかない状況です。
  • 修正点を教えていただけないでしょうか?
  • ASCまたはDESCを入力してソートの順序を指定し、結果を表示しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

fscanf()のままなので読み込みが上手くいっていないことは別にして、qsort()の第3引数は 1000 もしくは sizeof(sin[0]) でないといけませんね。

その他の回答 (1)

回答No.1

>C言語で下記のファイルの中身を昇順と降順で出力しようとしている 前回の投稿もまだ放置されてるようですが、 今回のは、別の問題で、問題がカンパケになっており、 何をソートするのか?について記述がないため、 回答が「ありません」 が、回答になります。 ひとまず、放置されている問題の処理もお願いしたく。 qsort(sin, 9, sizeof(char), cmp_u); 前回も回答してますが、この部分、 ソート対象物が、sizeof(char)=つまり「1」になってます。 しかし、渡しているパラメタが2重配列でのsin それを、1バイトごとに9回、回していることになり、 思っている結果になるわけがないのですよ。 http://www.cc.kyoto-su.ac.jp/~yamada/ap/qsort.html なので、qsortをやめない限りは、解決は難しいでしょう。 qsortのロジックは、 char *p=(char *)sin; for (i=0;i<9-1;i++) { if (p[0]<>p[1]) /* 大小は渡している判定サブによるcmp_u/cmp_d */ { swap(p[0],p[1]); } } なので、 sinを一直線に見た先頭からの9バイトに対して行ってしまっているのが 原因です。 (と、前回も回答済みですので、そちらの処理を先にどうぞ)

関連するQ&A