C語(yǔ)言 fseek(f,0,SEEK_SET)函數(shù)案例詳解
fseek(f,0,SEEK_SET);
意思是把文件指針指向文件的開頭
fseek
函數(shù)名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函數(shù)設(shè)置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(zhǔn),偏移offset個(gè)字節(jié)的位置。如果執(zhí)行失敗(比如offset超過(guò)文件自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。
fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset.
程序例:
#include <stdio.h> 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\n", 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 );
第一個(gè)參數(shù)stream為文件指針
第二個(gè)參數(shù)offset為偏移量,整數(shù)表示正向偏移,負(fù)數(shù)表示負(fù)向偏移
第三個(gè)參數(shù)origin設(shè)定從文件的哪里開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件開頭
SEEK_CUR: 當(dāng)前位置
SEEK_END: 文件結(jié)尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次為0,1和2.
簡(jiǎn)言之:
fseek(fp,100L,0);把fp指針移動(dòng)到離文件開頭100字節(jié)處;
fseek(fp,100L,1);把fp指針移動(dòng)到離文件當(dāng)前位置100字節(jié)處;
fseek(fp,100L,2);把fp指針退回到離文件結(jié)尾100字節(jié)處。
使用實(shí)例:
#include<stdio.h> #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename,STUn) { FILE*fp; fp=fopen(filename,"rb+"); fseek(fp,-1L*sizeof(STU),SEEK_END); fwrite(&n,sizeof(STU),1,fp); fclose(fp); } voidmain()/*修改覆蓋最后一個(gè)學(xué)生數(shù)據(jù)*/ { STUt[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}}; STUn={10006,"ZhaoSi",55,70,68},ss[N]; inti,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("\nTheoriginaldata:\n\n"); for(j=0;j<N;j++) { printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } fun("student.dat",n); printf("\nThedataaftermodifing:\n\n"); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),N,fp); fclose(fp); for(j=0;j<N;j++) { printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } }
到此這篇關(guān)于C語(yǔ)言 fseek(f,0,SEEK_SET)函數(shù)案例詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言 fseek(f,0,SEEK_SET)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ Boost PropertyTree示例超詳細(xì)講解
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱2022-11-11C++如何實(shí)現(xiàn)定長(zhǎng)內(nèi)存池詳解
內(nèi)存池根據(jù)存儲(chǔ)的元素的長(zhǎng)度是否可變,分為變長(zhǎng),與定長(zhǎng)兩種內(nèi)存池,這篇文章主要給大家介紹了關(guān)于C++如何實(shí)現(xiàn)定長(zhǎng)內(nèi)存池的相關(guān)資料,需要的朋友可以參考下2021-09-09關(guān)于C++中的友元函數(shù)的一些總結(jié)
以下是對(duì)C++中的友元函數(shù)進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09