プロが教える店舗&オフィスのセキュリティ対策術

stdio.h は、標準的な入出力を行う場合に必要なバッファなどが定義されているファイルです。という文章で、などがついていますが、バッファ以外に何が定義されているのでしょうか? 教えていただけると嬉しいです。先生に聞いてみると、「stdio.hはファイルです。だけで良いのでは?」と聞くと、それでは、箱に(インクルード)に牛乳を入れてください。と言われて、流れてくるものは、パンやオレンジジュースなどが流れてきて、オレンジジュースを入れて納品したら、おかしなことになるよね?と言われて、だから、標準的な入出力を行う場合に必要なバッファというのが必要なんだよという意味がよく分かりません。後、バッファは、例えば、アンケート入力で、アンケートー1とするのがアンケートー1の領域になるよ。と言われました。どうも2つの話が繋がりません。教えていただけると嬉しいです。意味不明ですみません

A 回答 (7件)

ヘッダー <stdio.h> にはいくつかのマクロが定義されており、入出力を行うための3つの型と多くの関数が宣言されています。


入出力の関数を使用するためには、ヘッダー stdio.h をインクルードする。
 https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9 …

 マクロ、入出力を行うための3つの型、多くの関数、とある。

 いろいろな関数が、スタジオ・スタンドで箱売している、そんなのかもしれないですね。
    • good
    • 0
この回答へのお礼

つまり、標準的な入出力(例えばprintf) を行う場合に、必要なバッファ(printfなどの関数)などが定義されているファイルです。ということで、つまり例え話で、独自で思ったのですが、映画館でたくさんの席があります。で、私(これをprintf)で、どこの席(これがバッファ)で、座る(これがprintfののバッファ)。という事でしょうか?教えていただけると嬉しいです。すみません。意味不明ですよね。だけど、ふとそう思ったのです。

お礼日時:2023/02/01 16:20

No.4です。


誤りがあったので修正します。

>(小さなプログラム)
これはヘッダーではなくライブラリーにあります。
    • good
    • 0
この回答へのお礼

つまり、などとはスクリーンにバッファーの内容を出力したり、キーボードのコードをバッファーに読み込むマクロが入っているということで合っていますでしょうか?教えていただけると嬉しいです。

お礼日時:2023/01/29 21:47

>標準入出力の関数定義がメインでしょう。



ちょっと修正。定義じゃなくて宣言ですね。
関数本体(ロジック)はマクロ以外はヘッダには入ってなくて
ライブラリからリンクされます。
    • good
    • 0
この回答へのお礼

つまり、標準的な入出力(例えばprintf) を行う場合に、必要なバッファ(printfなどの関数)などが定義されているファイルです。ということで、つまり例え話で、独自で思ったのですが、映画館でたくさんの席があります。で、私(これをprintf)で、どこの席(これがバッファ)で、座る(これがprintfののバッファ)。という事でしょうか?教えていただけると嬉しいです。すみません。意味不明ですよね。だけど、ふとそう思ったのです。

お礼日時:2023/02/01 16:21

>などがついていますが・・・


などとはスクリーンにバッファーの内容を出力したり
キーボードのコードをバッファーに読み込むマクロ
(小さなプログラム)が入っています。
    • good
    • 0

質問が散漫なんで、何を聞きたいのかわかりにくい。



①stdio.h に何が入っているかというと、もちろん
標準入出力の関数定義がメインでしょう。
標準入出力は多くの場合バッファを使ってI/O するから
バッファを作るための定数やロジックなども入っている。

②「箱に(インクルード)に牛乳を入れてください。と言われて、流れてくるものは、パンやオレンジジュースなどが流れてきて、オレンジジュースを入れて納品したら、おかしなことになるよね?」

全く意味不明。何がいいたいのかわからない。

I/O というのは小さなデータに対して行うと
効率が悪い(遅い)ことが多い。

デバイスとの入出力はある程度まとまった大きさのデータで
行うのが効率がいい。しかし、文字列処理とか
データを小さなデータ単位で処理したいことが
よくある。その間を取り持つのがバッファドI/O

データをまとめてメモリに読んだ後、
適当なデータ単位に切り分けて読んでくれたり、
小さいな単位のデータの書き込みをメモリにいったん貯めて
適当な時期に一挙にデバイスに書き込んだりする。
    • good
    • 1

C言語って、分かるまで、ちょっと大変な部分がありますね。


私の場合、昔、某市販ソフトのプロテクト破りのために、アセンブラを理解する必要があって、アセンブラをそれなりに理解したら、C言語がそれなりに分かるようになった覚えがあります。
C言語は「高級アセンブラ」と呼ばれることもありますから、一度、アセンブラを勉強してみるのもいいと思います。

ちなみに、バッファは単純にデータの入れ物と思えばいいのでは?
道端に座って、お金をめぐんでもらうとき、空き缶などの入れ物がないとダメですよね?それと同じ。

なお、C言語の勉強には、「エキスパートCプログラミングー知られざるCの深層/ASCII」がお勧めかも?ただ、初心者にはちょっと難解かも?
    • good
    • 0

https://www.ibm.com/docs/ja/zos/2.5.0?topic=file …

バッファというより、BUFSIZというマクロが定義されているが正解です。
NULLやEOFなんかもよく使うと思います。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!