- 締切済み
C言語でファイルの中身をソートするコマンド
unixのsortのようなコマンドはC言語にあるのでしょうか。 配列のソートではなくてファイルに対してのコマンドです。 sortをsystem()で使用すれば良いのでしょうが、C言語のコマンドにあると聞きました。おそらくunix関連のC言語のコマンドだと思うのですが。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- bnosuke-x
- ベストアンサー率39% (43/110)
>C言語のコマンドにあると聞きました。 これは、クイックソートのアルゴリズムを提供するqsort()と言う関数のことだと思います。 もちろんファイルの中身をソートしてはくれません。 これを利用するには、ポインタと関数へのポインタの知識が必要です。 ですが、K&Rに利用例が載っているので、それを参考にすればソートを行うプログラムは作れるでしょう。 注意点としては、「並べ替え対象のデータを受け取り、比較の結果を返す関数を自作し、その関数のポインタをqsort()へ渡す」というところがなかなかなじみのない概念だと思いますが、これもじっくりK&Rを読めばわかると思います。 極端な話、K&Rのサンプルをまねっこして作っても良いと思います。 ところでこれは標準のC言語の話で、具体的なコンパイラに用意されているライブラリにあるのであればもちろんそれを使うことができます。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★何かと思い違いをされているのでしょうか? >unixのsortのようなコマンドはC言語にあるのでしょうか。 ↑ C言語では既に回答がでていますね。 『コマンド』=『関数』という事なら存在しないです。 qsort() 関数を利用すれば配列を用いて出来ます。 他にも C++ 言語では STL(標準テンプレート・ライブラリ)で sort() がありますね。 http://www.geocities.jp/ky_webid/cpp/library/019.html どちらにせよファイルを直接ソートする関数はありません。 >配列のソートではなくてファイルに対してのコマンドです。 ↑ 配列という事は当然 qsort() などの関数を知っているという事ですよね。 >sortをsystem()で使用すれば良いのでしょうが、C言語のコマンドにあると聞きました。 >おそらくunix関連のC言語のコマンドだと思うのですが。 ↑ それに system() 関数で外部コマンドを呼び出せばファイルを直接ソートは 可能という事も知っているようですね。 補足要求: >C言語でファイルの中身をソートするコマンド ↑ どちらで C 言語の関数からファイルを直接ソート出来ると聞いたのでしょうか? 何かと思い違いをされているような気がしますけど。 そもそもコマンドとは表現しないで『関数』と表現すべきと思います。 『関数』=『処理手順』=『コマンド』という感じなのでしょうけど。一応。 ・以上。どちらで聞いたのでしょうか?HP なら URL を載せて下さい。
- maku_x
- ベストアンサー率44% (164/371)
C言語では、ファイルに対して直接ソートを行う関数はありません。配列、構造体、文字列などに対してソートを行う qsort() と言う標準関数はありますので、No.1 様が書かれているように、(テキスト)ファイルを1行づつ配列に読み込ませて、qsort() で処理し、ソートできた配列をファイルに書き出せば、お望みのことは可能です。
- a-saitoh
- ベストアンサー率30% (524/1722)
そもそもC言語には「コマンド」なるものは存在しません。 標準ライブラリにも、ファイルをソートする関数は存在しません。
- shirayukix
- ベストアンサー率43% (90/207)
意味がよく分かりませんが、C言語の関数の話でしょうか? ファイルの内容を1行ごと配列に読み込んでソートするしかないでしょう。 配列の内容を見てソートする関数を自作することになります。