コンテンツにスキップ

C++/標準ライブラリ/cstdio

出典: フリー教科書『ウィキブックス(Wikibooks)』

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