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++プログラムでファイル入出力が必要な場合に利用できます。