人生最悪の忘れ物

stdio.h は、標準的な入出力を行う場合に必要なバッファなどが定義されているファイルです。という文章で、などをついていますが、バッファ以外に何が定義されているのでしょうか? 教えていただけると嬉しいです。

A 回答 (7件)

stdio.hの内容にこだわる必要はありません。


標準的な入出力を行うときの関数の定義がされているので、
stdio.hをincludeしないとコンパイルエラー(警告)が発生するというだけのことです。
各関数の説明を参照すると、必ずどのファイルをincludeしなければいけないかが書かれています。
printfの場合
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ …
fopenの場合
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ …
sqrtの場合
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ …

関数を呼び出すとき、「man 関数名」で検索してください。
例 man printf
その結果、Man page of PRINTFと表示されるいくつかのURLがあるので、それをクリックすると
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ …
のようなその関数の説明にたどり着けます。

printfを使うなら、stdio.h
fopenを使うなら、stdio.h
sqrtを使うなら、math.h
をincludeしなければいけないことが判ります。
あなたがこれらのライブラリの開発者を目指すのであれば話は別ですが、
特別な理由がない限り
stdio.h、math.hのなかに何が書かれているかを気にする必要はありません。
必要なことは、どの関数を呼び出すときに、どのヘッダファイルをincludeするかに留意することです。
    • good
    • 0
この回答へのお礼

mainではなく、manなのですね?それとprintfやscanfなどの関数の宣言が入っているのですよね?バッファなどの「など」には、一体何があるのでしょうか?
関数、型、定義でしょうか?例として、関数はprintf関数で、型がFILEで、定数が、EOFでしょうか?関数と型と定義とは何なのでしょうか?教えていただけると嬉しいです。

お礼日時:2023/01/02 04:43

>バッファ以外に何が定義されているのでしょうか?



実際に読んでください。読めば全部書いてあります。他人から正しいのか正しくないのかよくわからないような情報を聞くよりもずっと正確です。また、stdio.hの中では他のヘッダファイルもincludeされていますので、それもあわせて読んでください(その先でもincludeされていて…となっていますが、その先も同様です)。

たとえばglibcのstdio.hなら、ここを起点に読んでいってみては?
https://github.com/lattera/glibc/blob/master/inc …

また、バッファ(構造体)や関数のプロトタイプ宣言だけであれば、stdio.hそのものをプリプロセッサに食わせれば、現処理系で利用可能なものが一覧っぽく表示されます(ただし、定数は見えなくなりますが)。
たとえばLinuxとかであれば、
$ cpp /usr/include/stdio.h
    • good
    • 1

>関数と型と定数とは何なのでしょうか?教えていただけると嬉しいです。


 しっかりした参考書を1冊読めば事足りること。
 過去に数学に関するトンデモ質問で大いに迷惑をかけたことをここでも繰り返さないように。質問文も日本語として相も変わらずおかしい。
    • good
    • 14

> 関数、型、定義でしょうか?



この質問に自分で答えられるくらいでないと、stdio.hの内容について理解できないと思います。
プログラミングの学習では、細かいところにこだわることも必要ですが、それと同じくらい、細かいことを気にしないことも必要です。


> stdio.h は、標準的な入出力を行う場合に必要なバッファなどが定義されているファイルです。

そもそも、この文章は正しくありません。
・言った人が間違えている。
・あなたが間違えて覚えている。
のいずれかだと思われます。
    • good
    • 4

仕様としては、


https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9 …
その他処理系によってそれ以外もあるかもしれませんが、

>標準的な入出力を行う場合に必要なバッファなどが定義されている
バッファは定義されないことが多いと思います。
inline な static 関数だともしかしたらあるかもしれませんが、
一般的には、定義されるのはバッファの情報くらいです。
    • good
    • 0

(極々稀な例外を除けば)stdio.hはC言語で書かれたテキストファイルなので、実際に読めばわかります。



また「C言語 標準ライブラリ stdio」で検索かければ、リファレンスマニュアルとか解説とかがたくさん見つかります。
    • good
    • 2

printfやscanfなどの組込関数の定義です。

sqr(sqrtだったかも)のような平方根の関数は、stdio.hには入っていません。math.h(だったかな?)の定義も必要です。
    • good
    • 0
この回答へのお礼

つまり、printf やscanfなどの関数の宣言が入っているのですよね?バッファなどの「など」には、一体何があるのでしょうか?関数、型、定数でしょうか?
例として、関数は、printf関数で、型が、FILEで、定数が、EOFでしょうか?
関数と型と定数とは何なのでしょうか?教えていただけると嬉しいです。

お礼日時:2023/01/01 13:03

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