Profile

ys2310

Author:ys2310
2008年春にNew York Cityにあるふる〜い大学を卒業。


Categories


new postings


new comments


new trackbacks


monthly archeive


FC2ブログ 転職
DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:C/C++ stdio.h
ファイルアクセス関数
fopen
ヘッダ #include "stdio.h"
形 式 FILE *fopen(const char *filename, const char *mode);
機 能 fopen関数は、filenameが示す文字列を名前とするファイルをオープンし、そのファイルにストリームを結び付ける。
 実引数modeが指す文字列は、次の文字の並びのうちのいずれかで始まる。
をする更新モードでオープンまたは生成する。
r  テキストファイルを読取りモードでオープンする。
w  テキストファイルを書込みモードで生成するか、または長さ0に切り捨てる。
a  追加、すなわちテキストファイルをファイルの終わりの位置からの書込みモードでオープンまたは生成する。
rb  バイナリファイルを読取りモードでオープンする。
wb  バイナリファイルを書込みモードで生成するか、または長さ0に切り捨てる。
ab  追加、すなわちバイナリファイルをファイルの終わりの位置から書込みモードでオープンまたは生成する。
r+  テキストファイルを更新(読取りと書込み)モードでオープンする。
w+  テキストファイルを更新モードで生成するか、または長さ0に切り捨てる。
a+  追加、すなわちテキストファイルをファイルの終わりの位置から書込みをする更新モードでオープンまたは生成する。
r+bまたはrb+  バイナリファイルを更新(読取りと書込み)モードでオープンする。
w+bまたはwb+  バイナリファイルを更新モードで生成するか、または長さ0に切り捨てる。
a+bまたはab+  追加、すなわちバイナリファイルをファイルの終わりの位置から書込み
 存在しないファイルまたは読取り操作が許されていないファイルに対する読取りモードでのオープン(modeの最初の文字が'r'の場合)は失敗する。
 追加モードでオープン(modeの先頭文字が'a'の場合)されたファイルへのオープン後の書込み操作は、すべてファイルの終わりに対して行われる。その間にfseek関数を呼び出しても無視される。バイナリファイルにナル文字の詰め物をする処理系では、バイナリの追加モードでのオープン時(modeの先頭文字が'a'で、'b'が2番目または3番目の文字の場合)には、そのストリームに対するファイル位置表示子を、ファイルに書かれているデータの最後を越えた位置にセットすることもある。
 更新モードでオープン('+'がmodeの2番目または3番目の文字である場合)されたファイルに結び付けられたストリームに対しては、入力操作と出力操作を許す。ただし、出力操作の後に入力操作を行う場合、この二つの操作の間にファイル位置付け関数(fseek、fsetposもしくはrewind)を呼び出さなければならない。更に入力操作がファイルの終わりを検出した場合を除いて、入力操作の後で出力操作を行うときは、その二つの操作の間にファイル位置付け関数を呼び出さなければならない。処理系によっては、更新モードでのテキストファイルのオープン(または生成)を、同じモードでのバイナリストリームのオープン(または生成)に代えても構わない。
 オープンしたストリームが対話装置に結び付けられていないことが認識できる場合、そしてその場合に限り、そのストリームを完全バッファリングする。オープン時に、ストリームに対するエラー表示子とファイル終了表示子をクリアする。
返却値 fopen関数は、オープンしたストリームを制御するオブジェクトへのポインタを返す。オープン操作が失敗したとき、空ポインタを返す。

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/fopen.html

| BLOG TOP |
DATE: CATEGORY:C/C++ stdio.h
文字入出力関数
fread
ヘッダ #include "stdio.h"
形 式 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
機 能 fread関数は、streamが指すストリームから、最大nmemb個の大きさsizeの要素を、ptrが指す配列に読み取る。そのストリームに対応するファイル位置表示子(定義されていれば)は、読取りに成功した文字数分だけ進む。エラーが発生したとき、そのストリームに対応するファイル位置表示子の値は不定とする。一つの要素の一部だけが読み取られたとき、その値は不定とする。
返却値 fread関数は、読取りに成功した要素の個数を返す。その個数は、読取りエラーまたはファイルの終わりになったとき、nmembより小さいことがある。sizeまたはnmembが0のとき、fread関数は0を返す。このとき、配列の内容とストリームの状態は、変化しない。

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/fread.html

| BLOG TOP |
DATE: CATEGORY:C/C++ stdio.h
ファイル位置付け関数
fseek
ヘッダ #include "stdio.h"
形 式 int fseek(FILE *stream, long offset, int whence);
機 能 streamが指すストリームに対応するファイル位置表示子の値を変更する。
バイナリストリームの場合、新しい位置(ファイルの始めからの文字数)は、whenceが示す位置にoffsetを加えることによって得られる。whenceが示す位置とは、whenceがSEEK_SETのときはファイルの始めとし、SEEK_CURのときは、ファイル位置表示子のその時の値とし、SEEK_ENDのときはファイルの終わりとする。バイナリストリームでは、whenceがSEEK_ENDの値をもつ本関数の呼出しを意味のあるものとしてサポートする必要はない。
テキストストリームの場合、offsetが0であるか、またはoffsetが同じストリームに対する以前のftell関数の呼出しで返された値でなければなりません。後者の場合、whenceはSEEK_SETでな本関数の呼出しに成功すると、そのストリームに対応するファイル終了表示子をクリアし、同じストリームに対するungetc関数の効果をすべて解除します。本関数の呼出しの後では、更新ストリームに対する次の操作は入力でも出力でもよい。
返却値 要求を満足できなかった場合に限り0以外の値を返す。

【使用例】

#include
#include

int main(int argc,char *argv[])
{
FILE *fp;

if((fp = fopen(argv[1], "rb")) == NULL ) {
fprintf(stderr,"ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}

fseek(fp, 10L, SEEK_SET);
printf("ファイル位置 = %ld\n",ftell(fp));
fseek(fp, -5L, SEEK_CUR);
printf("ファイル位置 = %ld\n",ftell(fp));
fseek(fp, 0L, SEEK_END);
printf("ファイル位置 = %ld\n",ftell(fp));
fseek(fp, 0L, SEEK_SET);
printf("ファイル位置 = %ld\n",ftell(fp));

fclose(fp);

return 0;
}

【実行結果例】

ファイル位置 = 10
ファイル位置 = 5
ファイル位置 = 661
ファイル位置 = 0

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/fseek.htmlhttp://www9.plala.or.jp/sgwr-t/lib/fseek.html

| BLOG TOP |
DATE: CATEGORY:C/C++ stdio.h
ファイル位置付け関数
fgetpos
ヘッダ #include "stdio.h"
形 式 int fgetpos(FILE *stream, fpos_t *pos);
機 能 streamが指すストリームに対応するファイル位置表示子のその時の値を、posが指すオブジェクトに格納する。格納した値は、本関数呼出し時の位置にストリームを再位置付けするために、fsetpos関数で使用できる情報を含む。
返却値 成功したとき0を返す。失敗したときは、0以外の値を返し、処理系定義の正の値をerrnoに設定する。

【使用例】

#include
#include

int main(void)
{
FILE *fp;
fpos_t fpos, tmppos;
char s[256];

if((fp = fopen("TEMP.FIL", "w+")) == NULL ) {
fprintf(stderr,"入力ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}

/* ファイル位置の退避 */
fgetpos(fp, &fpos);
printf("最初のファイル位置: %ld\n", fpos);

/* ファイルに7文字書き込み */
fputs("ABCDEFG",fp);

fgetpos(fp, &tmppos);
printf("書き込み後のファイル位置: %ld\n", tmppos);

/* ファイル位置を元に設定 */
if(fsetpos(fp, &fpos) == 0) {
fgetpos(fp, &tmppos);
printf("元に戻したファイル位置: %ld\n", tmppos);
fgets(s, sizeof(s), fp);
printf("ファイル内容: %s\n",s);
}
else {
fprintf(stderr, "fsetpos 異常\n");
exit(EXIT_FAILURE);
}

fclose(fp);
return 0;
}

【実行結果】

最初のファイル位置: 0
書き込み後のファイル位置: 7
元に戻したファイル位置: 0
ファイル内容: ABCDEFG

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/fgetpos.htmlhttp://www9.plala.or.jp/sgwr-t/lib/fgetpos.html

| BLOG TOP |
DATE: CATEGORY:C/C++ stdio.h
ファイル位置付け関数
fsetpos
ヘッダ #include "stdio.h"
形 式 int fsetpos(FILE *stream, const fpos_t *pos);
機 能 posが指すオブジェクトの値に従って、streamがストリームに対応するファイル位置表示子を設定する。posは、同じストリームに対するそれ以前のfgetpos関数の呼出しから得られた値でなければならない。本関数の呼出しに成功すると、そのストリームに対応するファイル終了表示子をクリアし、そのストリームのungetc関数の効果をすべて解除する。本関数の呼出しの後では、更新ストリームに対する次の操作は入力でも出力でもよい。
返却値 成功したとき0を返す。失敗したときは、0以外の値を返し、処理系定義の正の値をerrnoに設定する。

【使用例】

#include
#include

int main(void)
{
FILE *fp;
fpos_t fpos, tmppos;
char s[256];

if((fp = fopen("TEMP.FIL", "w+")) == NULL ) {
fprintf(stderr,"入力ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}

/* ファイル位置の退避 */
fgetpos(fp, &fpos);
printf("最初のファイル位置: %ld\n", fpos);

/* ファイルに7文字書き込み */
fputs("ABCDEFG",fp);

fgetpos(fp, &tmppos);
printf("書き込み後のファイル位置: %ld\n", tmppos);

/* ファイル位置を元に設定 */
if(fsetpos(fp, &fpos) == 0) {
fgetpos(fp, &tmppos);
printf("元に戻したファイル位置: %ld\n", tmppos);
fgets(s, sizeof(s), fp);
printf("ファイル内容: %s\n",s);
}
else {
fprintf(stderr, "fsetpos 異常\n");
exit(EXIT_FAILURE);
}

fclose(fp);
return 0;
}

【実行結果】

最初のファイル位置: 0
書き込み後のファイル位置: 7
元に戻したファイル位置: 0
ファイル内容: ABCDEFG

[Quote]:http://www.bohyoh.com/CandCPP/C/Library/fsetpos.htmlhttp://www9.plala.or.jp/sgwr-t/lib/fsetpos.html

| BLOG TOP |

copyright © Manhattan life all rights reserved.Powered by FC2ブログ