fseek()関数の使い方
転載は出典を明記してください.https://blog.csdn.net/wl_soft50/article/details/7787521
毎日少しずつ上達します->関数fseek()の使い方
コードを読むとき、昔から使っていたfseek()に出会って、久しぶりに使っていないので、ちょっと見慣れていないので、次回調べるために書きました.
関数機能は、ファイルポインタをファイルの先頭に向ける、ヘッダファイルstdioを含む必要がある.h
fseek関数名:fseek機能:ストリーム上のファイルポインタの再配置使い方:int fseek(FILE*stream,long offset,int fromwhere);説明:関数はファイルポインタstreamの位置を設定します.実行に成功すると、streamはfromwhereを基準にoffsetバイトの位置をシフトします.offsetがファイル自体のサイズを超えるなどの実行に失敗した場合、streamが指す位置は変更されません.戻り値:成功しました.0を返します.そうでなければ、他の値を返します.fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset. プログラム例:
int fseek( FILE *stream, long offset, int origin ); 1番目のパラメータstreamはファイルポインタ2番目のパラメータoffsetはオフセット量、整数は順方向オフセット、負数は負方向オフセット3番目のパラメータoriginはファイルのどこからオフセットを開始するかを設定し、値はSEEK_CUR、 SEEK_ENDまたはSEEK_SET SEEK_SET:ファイル先頭SEEK_CUR:現在位置SEEK_END:ファイルの最後にSEEK_SET,SEEK_CURとSEEK_END和は0,1,2の順である.簡単に言えば、fseek(fp,100 L,0);fpポインタをファイルの先頭から100バイト離れたところに移動します.fseek(fp,100L,1);fpポインタをファイルの現在位置から100バイト離れた場所に移動する.fseek(fp,100L,2);fpポインタをファイルの最後の100バイトに戻します.(コメントによると、fseek(fp,-100 L,2))の使用例:
毎日少しずつ上達します->関数fseek()の使い方
コードを読むとき、昔から使っていたfseek()に出会って、久しぶりに使っていないので、ちょっと見慣れていないので、次回調べるために書きました.
関数機能は、ファイルポインタをファイルの先頭に向ける、ヘッダファイルstdioを含む必要がある.h
fseek関数名:fseek機能:ストリーム上のファイルポインタの再配置使い方:int fseek(FILE*stream,long offset,int fromwhere);説明:関数はファイルポインタstreamの位置を設定します.実行に成功すると、streamはfromwhereを基準にoffsetバイトの位置をシフトします.offsetがファイル自体のサイズを超えるなどの実行に失敗した場合、streamが指す位置は変更されません.戻り値:成功しました.0を返します.そうでなければ、他の値を返します.fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset. プログラム例:
#include
long filesize(FILE *stream);
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w+");
fprintf(stream, "This is a test");
printf("Filesize of MYFILE.TXT is %ld bytes
", filesize(stream));
fclose(stream);
return 0;
}
long filesize(FILE *stream)
{
long curpos, length;
curpos = ftell(stream);
fseek(stream, 0L, SEEK_END);
length = ftell(stream);
fseek(stream, curpos, SEEK_SET);
return length;
}
int fseek( FILE *stream, long offset, int origin ); 1番目のパラメータstreamはファイルポインタ2番目のパラメータoffsetはオフセット量、整数は順方向オフセット、負数は負方向オフセット3番目のパラメータoriginはファイルのどこからオフセットを開始するかを設定し、値はSEEK_CUR、 SEEK_ENDまたはSEEK_SET SEEK_SET:ファイル先頭SEEK_CUR:現在位置SEEK_END:ファイルの最後にSEEK_SET,SEEK_CURとSEEK_END和は0,1,2の順である.簡単に言えば、fseek(fp,100 L,0);fpポインタをファイルの先頭から100バイト離れたところに移動します.fseek(fp,100L,1);fpポインタをファイルの現在位置から100バイト離れた場所に移動する.fseek(fp,100L,2);fpポインタをファイルの最後の100バイトに戻します.(コメントによると、fseek(fp,-100 L,2))の使用例:
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, STU n)
{
FILE *fp;
fp = fopen(filename, "rb+");
fseek(fp, -1L*sizeof(STU),SEEK_END);
fwrite(&n, sizeof(STU), 1, fp);
fclose(fp);
}
void main()
{
STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},
{10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},
{10005,"ZhangSan", 95, 80, 88}};
STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), N, fp);
fclose(fp);
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), N, fp);
fclose(fp);
printf("
The original data :
");
for (j=0; j