1.5 ライブラリ
1.5.2 Cライブラリ
1.5.2.3 printfおよびscanfの書式化ルーチン
fgets
#include <stdio.h>
char *fgets( char *s, int n, FILE *stream );
指定されたストリームから配列sへ、それ以降の文字を最大n-1個読み込みます。改行文字が現れた時点 で読み込みを終了します。
戻り値 s。EOFまたはエラーの場合はNULL。
fopen
#include <stdio.h>
FILE *fopen( const char *filename, const char *mode );
指定されたmodeでファイルをオープンします。
戻り値 ストリーム。ファイルがオープンできない場合、NULLが返されます。
modeには、以下の値を指定することができます。
"r" 読み込み。テキストファイルを読み込みモードでオープンします。
"w" 書き込み。テキストファイルを書き込みモードで作成します。指定されたファイルがすでに存在 している場合、その内容が破棄されます。
"a" 追加。既存のテキストファイルをオープンするか、新しいテキストファイルを作成し、ファイル 終了地点から書き込みを始めます。
"r+" テキストファイルをオープンし更新します。つまり読み込みと書き込みを行います。
"w+" テキストファイルを作成し更新します。同じ名前のファイルがすでにあれば破棄されます。
"a+" 追加。テキストファイルをオープンまたは作成し更新します。ファイル終了地点から書き込みを 始めます。
更新モード("+")では、同じファイルに対して読み込みと書き込みを行います。このモードでは、読み 込みしてから書き込みするまでの間または書き込みしてから読み込みするまでの間に、関数fflushが呼び 出されます。最初の文字のあとに文字bを入れることで、ファイルがバイナリファイルであることを指 定できます。たとえば、"rb"とするとバイナリの読み込みになり、"w+b"とするとバイナリファイルを作 成して更新することになります。ファイル名は、FILENAME̲MAX個の文字数に制限されます。また、
最大FOPEN̲MAX個のファイルを同時にオープンすることができます。
fprintf
#include <stdio.h>
int fprintf( FILE *stream, const char *format, ... );
指定されたストリームに、一定の書式で書き込みを行います。"printf()"、"̲iowrite()"の説明の他、
fread
#include <stdio.h>
size_t fread( void *ptr, size_t size, size_t nobj, FILE *stream );
指定されたストリームから、sizeバイトのnobjメンバーを読み込み、ptrでポイントされている配列 に入れます。"̲ioread()"の説明も参照してください。
戻り値 正常に読み込まれたオブジェクトの数。
free
#include <stdlib.h>
void free( void *p );
pでポイントされた空間の割り当てを解除します。ただしpは、"calloc()"、"malloc()"、"realloc()"を呼び出 して割り当てている空間をポイントしなければなりません。正しくポイントされていない場合、動作は 予期できないものになります。"calloc()"、"malloc()"、"realloc()"の説明も参照してください。
戻り値 なし。
freopen
#include <stdio.h>
FILE *freopen( const char *filename, const char *mode, FILE *stream );
指定されたmodeでファイルをオープンし、streamをそれに対応させます。この関数は、通常、stdin、
stdout、stderrに対応するファイルを変更するときに使用されます。"fopen()"の説明も参照してください。
戻り値 stream。エラーの場合はNULL。
fscanf
#include <stdio.h>
int fscanf( FILE *stream, const char *format, ... );
指定されたストリームから、一定の書式で読み込みを行います。"scanf()"、"̲ioread()"の説明の他、
"1.5.2.3 printfおよびscanfの書式化ルーチン"も参照してください。
戻り値 正常に変換された項目の数。
fseek
#include <stdio.h>
int fseek( FILE *stream, long offset, int origin );
streamでファイル位置インジケータをセットします。それ以降の読み込みまたは書き込みでは、新し い位置で開始するデータにアクセスします。バイナリファイルの場合、位置はoriginからoffset文字 の位置にセットされます。originは、ファイルの最初の場合SEEK̲SET、ファイルの現在位置の場合 SEEK̲CUR、ファイル終了の場合SEEK̲ENDになります。テキストストリームの場合、offsetは0、ま たはftellで返される値になります。その場合、originはSEEK̲SETになります。
戻り値 正常に完了すれば0、エラーの場合は0以外の値。
fsetpos
#include <stdio.h>
int fsetpos( FILE *stream, const fpos_t *ptr );
streamを、*ptr内のfgetposで記録されている位置に配置します。
戻り値 正常に完了すれば0、エラーの場合は0以外の値。
ftell
#include <stdio.h>
long ftell( FILE *stream );
戻り値 streamの現在のファイル位置。エラーの場合は-1L。
fwrite
#include <stdio.h>
size_t fwrite( const void *ptr, size_t size, size_t nobj, FILE *stream );
ptrでポイントされている配列から、指定されたストリームにsizeバイトのnobjメンバーを書き込み ます。
戻り値 正常に書き込まれたオブジェクトの数。
getc
#include <stdio.h>
int getc( FILE *stream );
指定されたストリームから1文字読み込みます。現在、FILE I/Oがサポートされていないため、getchar() として#defineされています。"̲ioread()"の説明も参照してください。
戻り値 読み込まれた文字。エラーの場合はEOF。
getchar
#include <stdio.h>
int getchar( void );
標準入力から1文字読み込みます。"̲ioread()"の説明も参照してください。
戻り値 読み込まれた文字。エラーの場合はEOF。
getenv
#include <stdlib.h>
char *getenv( const char *name );
戻り値 nameに対応する環境文字列。文字列が存在しない場合はNULL。
gets
#include <stdio.h>
char *gets( char *s );
改行文字が現れるまで、標準入力からすべての文字読み込みます。改行はNULL文字で置き換えられま す。"̲ioread()"の説明も参照してください。
戻り値 読み込まれた文字列に対するポインタ。エラーの場合はNULL。
gmtime
#include <time.h>
struct tm *gmtime( const time_t *tp );
カレンダー時間*tpを協定世界時(UTC)に変換します。
戻り値 UTCを表す構造体。UTCが使用できない場合はNULL。
isalnum
#include <ctype.h>
int isalnum( int c );
戻り値 cが英数字([A–Z][a–z][0–9])の場合、0以外の値。
isalpha
#include <ctype.h>
int isalpha( int c );
戻り値 cが英字([A–Z][a–z])の場合、0以外の値。
isascii
#include <ctype.h>
int isascii( int c );
戻り値 cが0から127の範囲の場合、0以外の値。これは非ANSI関数です。
iscntrl
#include <ctype.h>
int iscntrl( int c );
戻り値 cがコントロール文字の場合、0以外の値。
isdigit
#include <ctype.h>
int isdigit( int c );
戻り値 cが数字([0–9])の場合、0以外の値。
isgraph
#include <ctype.h>
int isgraph( int c );
戻り値 cがスペース以外のプリント可能な文字の場合、0以外の値。
islower
#include <ctype.h>
int islower( int c );
戻り値 cが小文字([a–z])の場合、0以外の値。
isprint
#include <ctype.h>
int isprint( int c );
戻り値 cがスペースを含むプリント可能な文字の場合、0以外の値。
ispunct
#include <ctype.h>
int ispunct( int c );
戻り値 cが句読文字("."、","、"!"など)の場合、0以外の値。
isspace
#include <ctype.h>
int isspace( int c );
戻り値 cが、スペース類の文字(スペース、タブ、垂直タブ、改ページ、改行文字、復帰文字)の場
合、0以外の値。
isupper
#include <ctype.h>
int isupper( int c );
戻り値 cが大文字([A–Z])の場合、0以外の値。
isxdigit
#include <ctype.h>
int isxdigit( int c );
戻り値 cが16進数([0–9][A–F][a–f])の場合、0以外の値。
labs
#include <stdlib.h>
long labs( long n );
戻り値 signed long引数の絶対値。
ldiv
#include <stdlib.h>
ldiv_t ldiv( long num, long denom );
両方の引数がlong整数値になります。返される商と余りもlong整数値になります。
戻り値 numをdenomで割ったときの商と余りを含む構造体。
localeconv
#include <locale.h>
struct lconv *localeconv( void );
struct lconv型を持つオブジェクトの構成要素に、現在のロケールの規則に従って数量を書式化する うえで適した値をセットします。
戻り値 埋め込まれたオブジェクトを示すポインタ。
localtime
#include <time.h>
struct tm *localtime( const time_t *tp );
カレンダー時間*tpをローカル時刻に変換します。
戻り値 ローカル時刻を表す構造体。
longjmp
#include <setjmp.h>
void longjmp( jmp_buf env. int val );
setjmp( )を呼び出して前に保存した環境をリストアします。対応するsetjmp( )呼び出しを呼び出した関数 が、まだ終了していない可能性があります。またvalの値は、0にすることができません。
malloc
#include <stdlib.h>
void *malloc( size_t size );
割り当てられた空間が初期化されません。割り当てられる最大空間は、ヒープサイズをカスタマイズす ることで変更できます("1.3.5 ヒープ"を参照)。デフォルトの場合、ヒープは割り当てられません。ヒー プが定義されていないときに"malloc()"が使用されると、ロケータがエラーを出します。スモールメモリ モデルまたはコンパクトデータメモリモデルで"malloc()"を使用する場合は、ロケータ記述ファイルで ヒープをアドレッシングモード"データ"からアドレッシングモード"データショート"に移す必要があり ます。これを怠ると、アプリケーションの結果をロケートするときに、ロケートエラーが出ます。
戻り値 外部メモリにあるsizeバイトの長さの空間を示すポインタ。十分な空間がない場合はNULL が返されます。
mblen
#include <stdlib.h>
int mblen( const char *s, size_t n );
sがNULLポインタでない場合、sがポイントする2バイトコード文字の構成バイト数を判別します。た だしシフト状態は影響を受けません。sがポイントする文字から最大でn文字をチェックします。
戻り値 バイト数。ただしsがNULL文字をポイントしている場合0になり、各バイトが正しい2バイト コード文字を構成していない場合1になります。
mbstowcs
#include <stdlib.h>
size_t mbstowcs( wchar_t *pwcs, const char *s, size_t n );
sがポイントする配列から初期シフト状態が始まる一連の2バイトコード文字を、対応するコードに変換 し、これらのコードをpwcsがポイントする配列に格納します。n個のコードを格納した時点、または0 の値を持つコードを格納した時点で停止します。
戻り値 変更された配列要素の数(終了0コードがある場合でも、これは含まれない)。ただし無効な2 バイトコード文字が見つかった場合は(size_t)-1。
mbtowc
#include <stdlib.h>
int mbtowc( wchar_t *pwc, const char *s, size_t n );
sがポイントする2バイトコード文字の構成バイト数を判別します。その後、その2バイトコード文字に 対応する、型wchar_tの値に対するコードを判別します。2バイトコード文字が有効でpwcがNULLポイ ンタでない場合、mbtowc関数は、pwcがポイントするオブジェクトにコードを格納します。sがポイン トする文字から最大でn文字をチェックします。
戻り値 バイト数。ただしsがNULL文字をポイントしている場合0になり、各バイトが正しい2バイト コード文字を構成していない場合1になります。
memchr
#include <string.h>
void *memchr( const void *cs, int c, size_t n );
文字cが見つかったときにcsの最初のnバイトをチェックします。
戻り値 見つからない場合はNULLが、見つかった場合は見つかった文字を示すポインタが返されます。
memcmp
#include <string.h>
int memcmp( const void *cs, const char *ct, size_t n );
csの最初のnバイトをctの内容と比較します。
戻り値 cs<ctの場合負の値、
cs==ctの場合0、
cs>ctの場合正の値。
memcpy
#include <string.h>
void *memcpy( void *s, const void *ct, size_t n );
ctからsにnバイトの文字をコピーします。ただし、2つのオブジェクトが重ね書きされることに対して は何の対策もとられません。
戻り値 s
memmove
#include <string.h>
void *memmove( void *s, const void *ct, size_t n );
ctからsにn個の文字をコピーします。ただし、2つのオブジェクトが重ね書きされることに対しては何 の対策もとられません。
戻り値 s