C++教科書/標準ライブラリ編/<cstdio>の章
編集はじめに
編集<cstdio>
ヘッダーはC言語標準ライブラリの<stdio.h>
に由来しており、ファイルの入出力を扱う関数が定義されています。
型
編集- FILE
- ファイルストリームを表すオブジェクト型です。ファイル入出力を制御するための情報を保持します。
- fpos_t
- ファイル内の位置を一意に特定できる型です。マルチバイトの状態も含みます。
- size_t
- サイズを表す符号なし整数型です。sizeofの結果の型になります。
マクロ
編集- NULL
- ヌルポインタ定数です。
- stdin、stdout、stderr
- 標準入力、標準出力、標準エラー出力のストリームを表すFILE型の式です。
- EOF
- ファイル終端を表す負の値の整数定数式です。
- FOPEN_MAX
- 同時にオープンできるファイルの最大数を表します。
- FILENAME_MAX
- ファイル名の最大長さを表します。
- BUFSIZ
- setbufが使用するバッファサイズです。
- _IOFBF、_IOLBF、_IONBF
- それぞれ全バッファリング、行バッファリング、無バッファリングを表すsetbuf、setvbufの引数です。
- SEEK_SET、SEEK_CUR、SEEK_END
- fseekで使う、ファイル先頭、現在位置、終端からの相対位置を表します。
- TMP_MAX
- tmpnamで生成できる一意のファイル名の最大数です。
- L_tmpnam
- tmpnamの結果を受け取るバッファの長さです。
ファイルアクセス関数
編集- fopen(filename, mode)
- ファイルをオープンします。modeでモードを指定します。
- freopen(filename, mode, stream)
- ストリームに新しいファイルを紐付けます。
- fclose(stream)
- ストリームを閉じます。
- fflush(stream)
- ストリームの出力をフラッシュします。
- setbuf(stream, buf)
- ストリームのバッファを設定します。
- setvbuf(stream, buf, mode, size)
- ストリームのバッファとサイズ、モードを設定します。
直接入出力関数
編集- fread(ptr, size, nmemb, stream)
- ストリームからnmemb個のsize長の要素を読み込みptrに格納します。
- fwrite(ptr, size, nmemb, stream)
- ptrからnmemb個のsize長の要素をストリームに書き込みます。
非書式入出力関数
編集- fgetc(stream)、getc(stream)
- ストリームから次の文字を読み込みます。
- fgets(s, n, stream)
- ストリームから最大n-1文字読み込み、sに格納します。
- fputc(c, stream)、putc(c, stream)
- 文字cをストリームに出力します。
- fputs(s, stream)
- 文字列sをストリームに出力します。
- getchar()
- stdinから文字を読み込みます。
- gets(s)
- (非推奨)stdinから文字列を読み込み、sに格納します。
- putchar(c)
- 文字cをstdoutに出力します。
- puts(s)
- 文字列sをstdoutに出力し、改行します。
- ungetc(c, stream)
- 文字cをストリームに戻します。
書式入出力関数
編集- scanf(format, ...),fscanf(stream, format, ...),sscanf(s, format, ...)
- 書式に従ってstdin、ストリーム、文字列から読み込みます。
- vscanf(format, arg), vfscanf(stream, format, arg), vsscanf(s, format, arg)
- (C++11から)可変長引数を使った書式入力です。
- printf(format, ...), fprintf(stream, format, ...), sprintf(s, format, ...), snprintf(s, n, format, ...)
- 書式に従ってstdout、ストリーム、文字列、最大n文字に出力します。
- vprintf(format, arg), vfprintf(stream, format, arg), vsprintf(s, format, arg), vsnprintf(s, n, format, arg)
- (C++11から)可変長引数を使った書式出力です。
ファイル位置操作関数
編集- ftell(stream)
- 現在のファイル位置を取得します。
- fgetpos(stream, pos)
- ストリームの現在位置をposに取得します。
- fseek(stream, offset, whence)
- ストリームの位置をwhence(SEEK_SET,SEEK_CUR,SEEK_END)を基準にoffsetだけ移動します。
- fsetpos(stream, pos)
- ストリームの位置をposに設定します。
- rewind(stream)
- ファイルの先頭に位置を移動します。
エラー処理関数
編集- clearerr(stream)
- ストリームのエラーフラグをクリアします。
- feof(stream)
- ストリームが終端に達していたらEOFの値を返します。
- ferror(stream)
- ストリームにエラーがあれば0以外を返します。
- perror(s)
- 最後のエラーの説明を文字列sとともにstderrに出力します。
ファイル操作関数
編集- remove(filename)
- ファイルを削除します。
- rename(oldname, newname)
- ファイル名を変更します。
- tmpfile()
- 一時ファイルを作成し、ポインタを返します。プロセス終了時に自動削除されます。
- tmpnam(s)
- 一時的に利用可能なファイル名の文字列をコピーしてsの先頭にある領域に格納し、そのポインタを返します。
まとめ
編集<cstdio>
ヘッダーはファイル操作の基本的な関数群を提供しています。これらはC言語の入出力機能を踏襲したものです。ファイルのオープン、クローズ、読み書き、書式入出力、位置操作、エラー処理などの機能があります。C++プログラムでファイル入出力が必要な場合に利用できます。