读写文件


一.文件的当前位置指针

文件结构类型FILE

其中FILE(结构体)包含

char *_ptr;

ptr表示当前的位置指针,指向当前的读写位置

二.跟踪文件的当前位置指针

ftell函数

long ftell(FILE *filepointer);

如果操作成功,返回filepointer文件地当前位置指针,即相对于文件开头的位移量(字节数)

否则返回-1L

feof函数

int feof(FILE *filepointer)

测试filepointer文件地位置指针是否指向文件的末尾

如果filepointer文件的位置指针已指向文件的末尾,则返回逻辑真,否则返回逻辑假

三.定位文件的当前位置指针

rewind函数

void rewind(FILE *filepointer)

rewind函数将filepointer文件的当前位置指针强行定位到文件的开头

fseek函数

int fseek(FILE *filepointer, long offest, int origin)
//filepointer是文件指针
/**
*offset是偏移量,类型为long int
文件开头------SEEK_SET--0
文件当前位置---SEEK_CUR--1
文件末尾------SEEK_END--2
//origin是起始位置,类型为int

fseek将filepointer文件的当前位置指针移动到距离origin的offset位置处

offset>0,表示新位置在origin后,反之亦然

若操作成功则返回0,否则返回非0

四.文件的打开与关闭

fopen()函数

FILE * fopen(char *filename, char *mode);
//filename是要打开的文件名,文件名前可以带路径
//mode是打开方式

如果文件打开成功,则返回指向该文件的指针

如果文件打开失败,则返回空指针NULL

e.g.

FILE *fp;
fp = fopen("f1.txt","r");//推荐写法
//r:文件一定要已存在
fp = fopen("c:\\aaa\\f1.txt", "w+");//不推荐写法
//w+:若文件不存在则创建文件,可读可写
char filename[] = "file\\f1.txt";
//存储到当前目录的file子目录下
fp = open(filename, "a+");
//a+:若文件不存在则创建文件,可读可写

fclose()函数

int fclose(FILE *filepointer);

如果正常关闭,返回0,否则返回非0

五.文件读写

fgetc函数—-字符方式文件读写

int fgetc(FILE *filepointer);

fgetc从filepointer文件的当前位置读出一个字符,同时将文件的位置指针_ptr后移一个字节。读出的字节一般要保存到一个字符型变量中

如果读取成功,返回读取的字节值

如果读到文件尾或出错,返回EOF

fgets函数—-字符串方式文件读写

char *fgets(char *str, int n, FILE *filepointer);
//*str是读出的字符串要存放的地方
//n:读取长度为n-1,在末尾加上'\0'

读取成功,返回指向字符串的指针

失败或出错,返回NULL

fprintf函数和fscanf函数—-格式化读取

int fscanf(FILE *filepointer,char *format[,adress,...]);
int fprintf(FILE *filepointer,char *format[,adress,...]);

e.g.

int x;
char *str;
fscanf(fp,"%d%s",&x,str);//从文件中读取

int y;
float y =5.8;
fprintf(fp,"%d,%6.2f",x,y);//写入文件中

失败返回EOF

fwrite函数和fread函数—-二进制方式文件读写

unsigned fwrite(void *ptr,unsigned size, unsigned n, FILE *filepointer);
//ptr:数据存储位置
//size:数据所占字节数
//n:写入n个数据
//filepointer:向这个文件写

fread同理


文章作者: WB
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WB !
  目录