No.14516![]() |
複数行同時にファイルに書き込むには? 投稿者---うの(2004/06/07 23:19:24) |
||
こんばんは。 必要なデータをデータベースより読み込み1行ずつファイルに出力していたのですが、 メモリに複数データをためてまとめて、ファイルに出力したいのですが、どのようにしたらよいのでしょうか? よろしくお願いします。 |
No.14517![]() |
Re:複数行同時にファイルに書き込むには? 投稿者---nop(2004/06/07 23:35:49) |
||
>必要なデータをデータベースより読み込み1行ずつファイルに出力していたのですが、 >メモリに複数データをためてまとめて、ファイルに出力したいのですが、どのようにしたらよいのでしょうか? 「一行」と言うのは、「改行文字までの文字列」を意味します。 よって、各行の後ろに「改行文字」を付けて出力すればよいでしょう。 |
No.14518![]() |
Re:複数行同時にファイルに書き込むには? 投稿者---うの(2004/06/08 00:04:48) |
||
配列の変数ではなく、ひとつの変数に改行文字を入れて格納するのでしょうか?現在fprintfを使用しているのですが、fwriteを使用するべきなのでしょうか? 配列とした場合の、fwriteの使い方がよくわかりません。 |
No.14519![]() |
Re:複数行同時にファイルに書き込むには? 投稿者---かずま(2004/06/08 03:01:58) |
||
> 必要なデータをデータベースより読み込み1行ずつファイルに出力していたのですが、 > メモリに複数データをためてまとめて、ファイルに出力したいのですが、 > どのようにしたらよいのでしょうか? fprintf, fwrite, fputs, fputc などはすべてメモリ上のバッファにデータ をためて、それがいっぱいになったら、まとめてファイルに出力するという ことをやっています。だから、何もしなくていいはずです。 逆に、本当に 1行ずつファイルに出力したいのなら、fprintf などのあとに fflush を使う必要があります。 int main(void) { int i; for (i = 0; i < 3; i++) { fprintf(stdout, "hoge\n"); /* fflush(stdout); */ getchar(); } return 0; } このプログラムを実行するとき、>file で標準出力を file に切り換えて みてください。getchar() で入力待ちになっているときに、別の端末(コマ ンドプロンプトや kterm など)から、type file または cat file してみて も何も表示されないはずです。Enter を 3回押して、プログラムが終了し、 標準出力の file が close されて初めて、file の中身を表示できるはずです。 fflush() を使うと、本当に 1行ずつフィアルに出力され、type や cat で 表示できます。getchar() に Enter を入力するたびに行が増えているのが わかるでしょう。 |
No.14521![]() |
Re:複数行同時にファイルに書き込むには? 投稿者---かずま(2004/06/08 09:57:38) |
||
> 逆に、本当に 1行ずつファイルに出力したいのなら、fprintf などのあとに > fflush を使う必要があります。 fflush を毎回呼び出す代わりに、setvbuf で「行バッファリング」モードに しておくという手もあります。 |