C言語関係掲示板

過去ログ

No.142.レコード単位の書き込み、読み込み


No.907

レコード単位の書き込み、読み込み
投稿者---Cプログラマー(初心者)(2002/01/22 00:02:43)


fread,fwriteってレコード単位で処理するというのはわかるんですが、
実際にファイルに書き込むとバイナリデータになってるんですが
テキストファイルで表示させることはできないのですか?
その辺のところがよくわからないのでサンプルなどありましたら
提示していただくと勉強の助けになります。


No.909

Re:レコード単位の書き込み、読み込み
投稿者---kikk(2002/01/22 07:14:33)


ども。


>fread,fwriteってレコード単位で処理するというのはわかるんですが、
>実際にファイルに書き込むとバイナリデータになってるんですが
>テキストファイルで表示させることはできないのですか?

表示->出力、と解釈します。

出力にはfprintf()を使うと便利です。
入力はfscanf()かfgets()+sscanf()が便利かと。入力ファイルのフォーマット
のチェックはfscanf()ないしsscanf()の返り値で行ってください。

ちなみに、構造体の入出力をfread()とfwrite()でやった場合、ファイルを取り
扱うプログラムが異なると、構造体の要素間のパディングによってはうまく
いかないことがあります。入出力のプログラムの両方とも同じ処理系でつくった
で扱う場合はたぶんうまくいきます。移植性を気にしなければならない場合は
各メンバを個別に扱う等してください。

もっというと、バイナリで格納した場合はバイトオーダ問題もあります。
もっとも、これは構造体の入出力に限ったことではありませんが。


データをテキストで格納するのは、可搬性という点では悪くないですね。。


では。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.03.06
Copyright(c) 2000-2002 TOMOJI All Rights Reserved