読み込んだファイルの内容を書き換えて表示するプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
inc

読み込んだファイルの内容を書き換えて表示するプログラム

#1

投稿記事 by inc » 14年前

ファイルを読み、その内容を書き換えて表示するプログラムを書きたく、質問させて頂きます。

数字が1〜100までランダムで並んでいるファイルを読み込み、昇順で並べるためにはどのようにプログラムを書けばいいのでしょうか。

例)
A 100
B 3
C 5

これを、
B 3
C 5
A 100

のようにしたいです。

ファイルを読み込んで表示する所までしか出来ませんでした。
どなたか分かるかたいらっしゃいましたら、教えて下さい。
宜しくお願い致します。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 読み込んだファイルの内容を書き換えて表示するプログラム

#2

投稿記事 by みけCAT » 14年前

inc さんが書きました:ファイルを読み、その内容を書き換えて表示するプログラムを書きたく、質問させて頂きます。
内容の書き換えはメモリ上だけですか?それともファイルに書き込みますか?
inc さんが書きました:ファイルを読み込んで表示する所までしか出来ませんでした。
まずはこのソースコードを貼り付けてください。

ヒント
qsort関数
構造体
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

inc

Re: 読み込んだファイルの内容を書き換えて表示するプログラム

#3

投稿記事 by inc » 14年前

みけCATさん
返信ありがとうございます。
inc さんが書きました:内容の書き換えはメモリ上だけですか?それともファイルに書き込みますか?
内容の書き換えはメモリ上だけです。

qsort関数の基本的な使い方は分かったのですが、読み込んだファイルとどう結びつけるかという所が分かりませんでした。
もう少しヒントを頂いても宜しいでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 読み込んだファイルの内容を書き換えて表示するプログラム

#4

投稿記事 by みけCAT » 14年前

みけCAT さんが書きました:
inc さんが書きました:ファイルを読み込んで表示する所までしか出来ませんでした。
まずはこのソースコードを貼り付けてください。
無視しないでください。

まず、このような構造体を用意します。

コード:

typedef struct {
	char mozi[100];/*必要な長さ確保*/
	int number;
} data_t;
次に、この構造体の配列を必要な数だけ確保します。

コード:

data_t data[10000];
もしくは

コード:

data_t* data;
data=calloc(10000,sizeof(data_t));
そして、この構造体にファイルのデータを読み込みます。

コード:

fscanf(fp,"%s%d",data[i].mozi,&data[i].number);/*iはループ変数*/
この配列をqsortでソートします。
参考http://support.microsoft.com/kb/73853/ja

よくqsort用の比較を引き算で実装している説明がありますが、オーバーフローの危険があるのでダメです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

たかぎ
記事: 328
登録日時: 15年前
住所: 大阪
連絡を取る:

Re: 読み込んだファイルの内容を書き換えて表示するプログラム

#5

投稿記事 by たかぎ » 14年前

みけCAT さんが書きました:よくqsort用の比較を引き算で実装している説明がありますが、オーバーフローの危険があるのでダメです。
今回に限れば、1~100までの値しかないようなので引き算でも十分ですね。
それと、1~100までしかないのであれば、まともにソートするより、100要素の配列に入れてから順番に出力する方がよい気がします。

閉鎖

“C言語何でも質問掲示板” へ戻る