
No.2ベストアンサー
- 回答日時:
>終わったらそれで戻そうかと思ったりもしていたので助かりました。
実際には、元のバッファが使われるワケではない(使われるかもしれないけど)と思いますが、
もし、元と同じ領域のバッファじゃなくても、特別問題があるとは思えません。
ただ、setvbufが成功したかどうかは調べる必要があると思います。
>バッファへのポインタをsetvbufを使う前に保存して…
バッファの領域が固定ならそれでいいと思いますが、
もしかしたら、mallocで初期化プログラムで確保されていて、
setvbufした時に解放されているかもしれませんから、
(コンパイラの)実装によっては危険だと思います。
No.3
- 回答日時:
> 入力する場所がbufに変わるのでしょうか?
入力する場所というのが何を想定しているのか分かりませんが、たぶん違うと思います。
setvbufやsetbufでストリームのバッファを変更しても、結び付けられているファイル等の入出力先が変わるわけではありません。
例えば、コンソールへの出力であれば行バッファリング(_IOLBF)で構いませんが、シリアルポートに出力するのであれば、バッファリングなし(_IONBF)にしておかないと、何か書き込むたびにfflushでバッファをフラッシュしなければ、期待した動作になりません。そういった状況に合わせて適切な制御を行うために、これらの関数は使われます。
> もしそうだとして、stdinを元に戻す方法はどうしたらいいのでしょう?
外しているかもしれませんが、例えばstdinをコンソールではなく、ファイルに結びつけるために変更したいのであれば、freopen関数を使用します。
この回答への補足
>入力する場所というのが何を想定しているのか分かりませんが・・・
これは入力のために文字を一時的に保存するバッファがbufに切り替わるのかと聞きたかったのですが・・・
確かに文章が短すぎて、聞き方により別のとらえ方も出来ますよね。
>外しているかもしれませんが・・・
勉強のために読んでいただけなので特に外しているとかはありません。
ただsetvbufはのちのち役に立ちそうだと感じたのできちんとわかっていたほうがいいと思ったので・・・
No.1
- 回答日時:
多分、バッファサイズを変更してやることで、入出力の効率を良くする目的で使われるのだと思います。
変更したモノを元に戻すには、
setvbuf(stdin,NULL,_IOLBF,BUFSIZ)
としてられば、自動的に標準サイズのバッファが割り当てられます。
BUFSIZは、stdio.hで定義されているstdio用のバッファサイズです。
お返事ありがとうございます。
本には「NULLを設定したら自動的に領域を割り当てる」と書いていたので、「どの領域を?」とか思っていたのですがそれでしたか。
出来なかったらstdinのバッファへのポインタをsetvbufを使う前に保存して、終わったらそれで戻そうかと思ったりもしていたので助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル形式またはファイル拡...
-
Acccess レポートをグループ別...
-
C言語のプログラムが異常終了し...
-
C言語 ドラッグとファイル名の表示
-
C言語初心者の質問失礼します。
-
バイナリ形式のXMLファイルを読...
-
vba ActiveSheet.pasteを使った...
-
LSI C-86 v3.30c 試食版について
-
ExcelVBAでカレントディレクト...
-
FTPでputすると空ファイルが出...
-
SWTとSwingの違い
-
標準的な、vb6.0の開始・保存・...
-
C言語での採番について
-
フルパスから最後のディレクト...
-
java ファイル出力 Cドライブ直下
-
ドラッグアンドドロップでファ...
-
jarファイルとjava.exeの関連付...
-
VBAでMP3を鳴らしたい
-
デスクトップにショートカット...
-
テキストファイルの先頭への文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル形式またはファイル拡...
-
Acccess レポートをグループ別...
-
CSVファイルを任意の場所に出力...
-
テキストファイルに改行コード...
-
コマンド(例えばls)の出力結果...
-
シェルコマンドの 2>&1 とはど...
-
ファイルの文字コードをUTF-8に...
-
(VBA)書式が変更されてしまい...
-
BitBltについて。
-
SendKeys "^V", True(貼り付け...
-
Excel のページを Jpegファイル...
-
【ExcelVBA】UTF-8(BOM無)でC...
-
VB.NETでExcelファイルを出力す...
-
AccessVBA複数レポート条件毎に...
-
raw形式からbmp形式への書き込...
-
Paiza Cloudです。 どうやれば...
-
OCRで起こしたテキスト文字をCS...
-
Wordマクロで指定したフォルダ...
-
C言語での縦方向のファイル出力...
-
VC++でUTF-8のファイルを出力し...
おすすめ情報