• ベストアンサー

stdio.hは何のためにあるのでしょうか?

stdio.hは何のためにあるのでしょうか? 標準関数をまとめたライブラリですが、 「標準」と呼ばれるぐらいなので、 includeしなくても使えるように最初からすればよいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

 C言語ではもともと標準関数は付いていませんでした。標準関数が規格化されたのはANCI-Cの規格ができた時です。あと、標準関数といっても実装の有無は処理系に依存しますので、関数をサポートしてるかどうかというのはヘッダファイルで明示的になっている方が親切です。  もちろん、標準関数のヘッダをインクルードしないことで同名のユーザー関数を扱ったりすることも出来ます。  それと、stdio.hは標準入出力の関数をまとめたヘッダファイルですが、標準関数を網羅しているわけではありません。他にもstdlib.hとかstring.hとかtime.hとか、標準関数のヘッダファイルはたくさんありますので、勉強してください。  ちなみにC言語ではライブラリ自体の構成は処理系に依存しますので、必ずしもstdio.hと一対一で対応するライブラリがあるとは限りません。(というか、普通は無いと思う)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

それは「プログラマが書いたことはやるし書いていないことはやらない」という「C の精神」に反する.

全文を見る
すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

stdioを必要としないプログラムもあるからです。 ドライバとかライブラリとかOSか、あるいは組込み用とかでは、ライブラリに依存しないものを作る必要があることがあります。 そんなときは、素のCだけ(あるいは、それ+最小限のライブラリ)で作ります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • stdio.h について

    質問です。 Borland C++ Compiler 5.5 を使っているのですが…。 Includeの中にstdio.hのファイルがありません stdio.hのソースを教えて下さい!!

  • #include <stdio.h>

    #include <stdio.h>の <> の意味と #include "xxxxx.h"の "" の意味を教えてください。

  • iostream stdio 違いについて。

    一昔前のC言語では、#include <stdio.h>などのものを、C ++言語では、#include <iostream>の1行で済ませるということでしょうか? だけど、C + +言語で、#include<stdio.h>を使いたければ使うことは出来ますよ。だけど、#include<iostream>だけで、済みますよ。という事でしょうか?つまり、#include<iostream>は、全ストリームつまり、全ファイル・全ライブラリを1つにまとめたという事でしょうか?教えて頂けると幸いです。

  • Visual C++ 2008で<stdio.h>のインクルード文が使えない!?

    #include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。

  • BCC・stdio.h・_stddef.hのエラー

    BCCと同梱されているstdio.hのエラーなのですが、 stdio.hのエラーは他では出なかったので、 ソース自体がおかしいのかと思っていますが、よく分かりません。 一応ソースを載せます。 #include <stdio.h> int main(int argc, char *argv[]) { if(argv[1] == "") { printf("---(Ver1.00.01)\n"); printf("easy.exe [filename]\n"); printf(" [filename] - ファイル名を指定してください.\n"); } return 0; } これによって次のエラーを吐いてきます。 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\_stddef.h 53: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\_stddef.h 72: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 51: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 104: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 105: 宣言が正しく終了していない エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 140: ) が必要 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 150: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 151: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 152: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 154: 宣言が正しく終了していない エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 155: ) が必要 エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 156: ) が必要 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 160: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 161: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 162: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 164: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 165: 宣言が正しく終了していない エラー E2141 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 166: 宣言の構文エラー エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 172: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 173: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 174: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 175: 宣言が正しく終了していない エラー E2141 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 177: 宣言の構文エラー エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 181: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 188: 宣言が正しく終了していない エラー E2228 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 188: エラーあるいは警告が多すぎる stdio.h,_stddef.hのソースは一切変えたりしていません。 また、BCCのエラーは、stdio.hとprintfを抜いて int main(int argc, char *argv[]) { if(argv[1] == "") { } return 0; } としたときに 宣言が正しく終了していない と表示されます。 環境は WindowsXP SP1 BCC Developer です。 よろしくお願いします。

  • "stdio.h"と<stdio.h>の違い

    "stdio.h"と<stdio.h>の違いについて教えていただけないでしょうか? 両方とも同じと考えているのですが正しいでしょうか? 教えていただけないでしょうか?よろしくお願いします。

  • stdio.hからsyntax error??

    10日でおぼえるC言語教室という書籍を購入し、その通りにシステム環境変数の設定を行ったのですが、stdio.hに対してNo such file or directoryの様な?文が出てきてしまいました。 そこで自分なりに調べた結果、ネット上にC_INCLUDE_PATHとCPLUS_INCLUDE_PATHも追加で設定する必要があると書いてありました。 この時点ですでに???ですが…とりあえずやってみたところNo such~のエラーはでなくなりました。 ただ、代わりにsyntax errorなどの様なエラーが沢山出てきてしまいました。(しかし、exeファイルは出来ていて実行は可能です) 自分で書いたコードなら書き間違いだと思うのですが、stdio.hは付属のCDーROMからのものなのでミスは無いと思うのですが… OSはvistaで、CドライブとDドライブが入っているものです。 この書籍でのCコンパイラはMinGWです。書籍付属のCD-ROMからmingw-jpを任意の場所(今回はDドライブ→新規→プログラム→MinGWの中)にコピーしてシステム環境変数pathの設定を行うとgccでコンパイルが可能というものです。 ちなみにシステム環境変数pathに設定したbinというフォルダがあるのは、mingw-jpの中で、場所はDドライブ→新規→プログラム→MinGW→mingw-jp→binです。 変数pathに追加したのは ;D:\新規\プログラム\MinGW\mingw-jp\bin; です。 C_INCLUDE_PATHとCPLUS_INCLUDE_PATHは両方ともD:\新規\プログラム\MinGW\mingw-jp\includeと記述しました。stdio.hはincludeのフォルダの中にちゃんとありました。 実際はmingw-jpの中にcodeというフォルダを作り、その中にhelloというフォルダを作り中にhello.cを記述してあります 以下がエラーの一部です D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:206: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:217: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:218: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:219: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:220: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:221: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:224: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:226: error: syntax error before "size_t" 実際はまだまだエラーが続いてます ここで 1.書籍にはシステム環境変数pathの設定のみしか書いてありませんでしたが、上記のNO~というエラーが出てしまいます。私の設定の仕方が悪いのでしょうか 2.C_INCLUDE_PATHとCPLUS_INCLUDE_PATHを追加すると1のエラーは無くなりましたがこれってどういう事なのでしょうか 3.stdio.hに対してエラーが沢山出ていますが、これって何なのでしょうか 4.syntax errorが出ているのに実行ができるのは何故なのでしょうか 5.この方面は素人同然なので文中の解釈が変かもしれませんが、ご指摘があればお願いします 自分でも調べてみましたがお手上げ状態です。助けていただければ幸いです

  • 関数ライブラリ一覧

    C言語の関数一覧のようなものは何を見たらわかるのでしょうか? 標準関数の一覧はよく見かけますが、ほかの関数の一覧はないのでしょうか? たとえば、あるインターネット上で公開されていたソースコードには #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <sys/param.h> #include <sys/uio.h> #include <unistd.h> と書いてありました。 上3つは標準ライブラリにかいてありますが、その他は載ってません。 こういったsys/uio.hなどの仕様はどこで見れるのでしょうか? よろしお願いします。

  • C/C++のヘッダーファイルやライブラリー関数について

    C言語の勉強をはじめました。コードの最初に書く#include<stdio.h>などの ヘッダーファイルやライブラリ関数を見ることはできるのでしょうか? 初歩的なことですみませんがよろしくお願い致します。

  • stdio.hをオープンできない…

    borlandのコンパイラーについての質問です(昔本付属のCDからインストールしたものです。verは5.5だと思われます。) ソースファイル include<stdio.h> void main(void){ printf("おめでとう!!\n"); } コンパイル c:\borland\bcc55\bin>bcc32 basic.c エラーメッセージはE2209 basic.c 1:インクルードファイルstdio.hをオープンできない、となります。このためprintfが使えないエラーメッセージも表示されます。過去の質問を色々と見させて頂きました。以前(昨年夏頃)には使えていた為、必要なファイルが消えている等の原因はなさそうです。メモ帳でbcc32も開いてみましたが-I"c:\borland\Bcc55\include"-L"c:\borland\Bcc55\libの表示があったので必要なファイルも開けているのではないかと勝手に解釈しています(bcc32.cfgフォルダなるものは存在しませんでしたが…)。いろいろと頑張ってみたのですがどうにもダメそうです。コンパイラが作動しないと課題が前に進まないため、大変困っています。是非皆様のお力をお貸し下さい。よろしくお願いします。