2
テキストファイルに303桁の80370の長さのリストがあり、それぞれが別々の行にあります。
私はCでそれらを並べ替えたいと思います。C:配列に収まらない長いリストを並べ替える
私の考えは、新しいファイルを作成してから最初の番号を追加することでした。
次に、別の番号と比較するたびに小さければ、もう1つの数字が追加されます。簡単です。しかし、それが大きい場合は、新しい番号を前に付ける必要があります。
私はそうのように先頭に追加してみました:
void prepend(char line[], FILE* w, FILE* waux, char filename[], char auxname[]) {
fprintf(waux, "%s\n", line); //print new number to new file (waux)
char ch;
while((ch = fgetc(w)) != EOF) {
fputc(ch, waux); //read old file (w) and add to new file (waux)
}
remove(filename); //delete old file
rename(auxname, filename); //rename new file to old file's name
}
しかし、私は、出力を読み取ろうとそれは(メモ帳++で)NULLの文字で埋めています。
何百万ものNULL文字の中で数字を見つけることができますが、それらは並べ替えられません。
は、なぜあなたは、ファイルへの出力の一部を書き込むことによってそれを行うにはしたいですか?すべてのデータを読み、すべてのデータを一度に並べ替えて書き出します。実際にはあなた自身のソート関数をロールする必要もなく、 '' 'qsort'関数を使うことができます:http://en.cppreference.com/w/cpp/algorithm/qsort –
Jack
これはちょっと2メガバイト(ポインタを使用する場合は、おそらく3MB)。非常に多くの数を含むことができる配列を(malloc()を使って)割り当てるのは難しくありません。 –
申し訳ありませんが、自分の考えが自分の数字を並べ替えることができないことに気付きました。しかし、あなたがそれらを並べ替える方法のアイデアを持っているなら、それは素晴らしいでしょう。 (: – AAN4EVA