文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"
char const* filename="D:/hello.txt";
"fopen",
FILE *fp=fopen(char const *name,char const mode);
e.g:FILE *fp = fopen(filename,"wb");
打開文件流,name為要打開文件的路徑,如這裏的filename;mode 為對文件的操作模式,通常使用:“wb”(寫操作),“rb”(讀操作);
如果打開文件成功返回一個指向FILE結構的指針;否則,返回一個NULL指針;
"fclose",
fclose(FILE* name);
關閉文件流,name 為之前打開的文件指針,如這裏的filename;
如果執行成功返回0,否則返回EOF;
e.g: fclose(fp);
"ftell",
long ftell(FILE *stream);
表示返回下一個讀取或者寫入將要開始的位置距離文件起始位置的偏移量。
e.g:
fseek(fp,5,SEEK_SET);
int i = ftell(fp); //這裏i=5;
"fseek",
int fseek(FILE *stream, long offset, int from);
表示對將要寫入的位置的定位;
stream為打開的文件指針,filename;
offset為距離from參數的相對距離;
from為定位的基準;模式為:SEEK_SET(從流的起始位置起,往後offset個字節)
SEEK_CUR(從流的當前位置起,往前往後offset個字節)
SEEK_END(從流的末尾起,往前往後offset個字節)
e.g:
fseek(fp,-5,SEEK_END);
fread(buf,1,4,fp);
"fgets",
char *fgets( char *buffer, int buffer_size, FILE* stream);
從指定的stream讀取字符,並復制到buffer中。當讀取到一個換行符號“\n”並存儲到緩沖區之後就不在讀取;如果緩沖區內存儲的字符數達到buffer_size-1個時,同樣停止讀取。
下次調用fgets將從流的下一個字符開始讀取。在任何一個情況下,一個NUL字節降被添加到緩沖區所存儲數據的末尾,使之成為一個字符串;
如果失敗,fgets返回一個NULL指針;否則返它的第一個參數(指向緩沖區的指針);
e.g:
char* ret = fgets(buf,512,fp); //成功,則返回buf指針;
"fprintf",
int fprintf(FILE *stream,char const *format,......) // 將數據轉換成字符串文本,並寫入stream文件中;
等於:
char buf[512];
sprintf(buf,"%s\n",fp);
fwrite(buf,1,strlen(line),fp);
e.g : fprintf(fp, "%s\n", buf);
"fwrite",
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
size 恒為1;
將buffer中的 count個字節寫入到文件steam中;
e.g:
fwrite(buf,1,4,fp);
"fread",
size_t fread(const void* buffer,size_t size, size_t count ,FILE *stream)
size恒為1; 從stream文件中讀取count個字節存放buffer中;
返回值為:實際讀取到的字節個數;
e.g:
fread(buf,1,4,fp);
"feof",
int feof(FILE *stream);
如果流當前處於文件尾,feof函數返回真。
e.g:
while (!feof(fp))
{
char* ret = fgets(buf, 512, fp);
if (ret)
{
printf("got::%s", ret);
}
}
文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"