C言語関係掲示板

過去ログ

No.473.ファイルからデータを読みこむと同時に書きこむ事はできますか

[戻る] [ホームページ]
No.3413

ファイル操作のことで
投稿者---akiko(2002/11/11 21:44:03)


ファイルからデータを読みこむと同時に書きこむ事はできますか?
ファイルをリードオープンして読み込んだり、ライトオープンして書き込んだり
できるんですが、同時に両方の事したいのです。
どうやってできるかアドバイスの方をお願いします。

No.3417

Re:ファイル操作のことで(リードかつライトで開く)
投稿者---kikk(2002/11/11 22:48:19)


ども。


>ファイルからデータを読みこむと同時に書きこむ事はできますか?

たぶん単一のファイルに対して、リードかつライトしたいということだと
思いますが、その場合は"r+"(か"r+b")でファイルを開いてください。

なお、書いてから読む場合、その間に何らかのシークかフラッシュ操作が
必要になります。

参考:
http://www9.plala.or.jp/sgwr-t/c/sec17.html#fopen
http://www.catnet.ne.jp/kouno/c_faq/c12.html#30
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fopen.3.html


では。

No.3418

Re:ファイル操作のことで
投稿者---ともじ(2002/11/11 22:54:58)


こんばんは。

>ファイルからデータを読みこむと同時に書きこむ事はできますか?
>ファイルをリードオープンして読み込んだり、ライトオープンして書き込んだり
>できるんですが、同時に両方の事したいのです。

"r+" モードでfopenしてください。
なお、ファイルの終わりに達していない入力後に続く出力の場合、
fseek、fsetpos、rewindのファイル位置づけ関数の呼び出しが必要です。

No.3436

Re:ファイル操作のことで
投稿者---akiko(2002/11/12 19:33:11)


>こんばんは。
>
>>ファイルからデータを読みこむと同時に書きこむ事はできますか?
>>ファイルをリードオープンして読み込んだり、ライトオープンして書き込んだり
>>できるんですが、同時に両方の事したいのです。
>
>"r+" モードでfopenしてください。
>なお、ファイルの終わりに達していない入力後に続く出力の場合、
>fseek、fsetpos、rewindのファイル位置づけ関数の呼び出しが必要です。

これは指定した位置に上書きとういう形なのでしょうか?
私はファイル中の特定のレコードを消したいのですが、書き込む時にこの特定のレコードを書き込まないとういう方法で実現できますでしょうか?


No.3438

Re:ファイル操作のことで
投稿者---ともじ(2002/11/12 20:02:17)


>これは指定した位置に上書きとういう形なのでしょうか?
>私はファイル中の特定のレコードを消したいのですが、書き込む時にこの特定のレコードを書き込まないとういう方法で実現できますでしょうか?

kikkさんご紹介のページにもあるように、「元々あった文字と同じ個数
しか上書きできないことも忘 れてはいけない。」になります。また、その
リンクにあるように、
Q:
ファイルの真ん中から一行(あるいは1レコード)削除するのはどうや ればよいか。
A:
ファイルを書き直すのでなければ、たぶん不可能だろう。普通は、単純にファイルを書き直す(レコードを削除するかわりに、削除したと 印を付けるだけにする手もある。こうすれば書き直しをしなくてもす む)。

ということです。
せっかくのご紹介ページです。活用してくださいね。