C语言文件操作笔记--代码写累了放松一下

来源:互联网 发布:知乎 如何评价王尼玛 编辑:程序博客网 时间:2024/05/16 08:55

所用到的函数:fopen fclose fwrite fread ftell fseek

1、fopen

FILE * fopen(const char * fname,const char * mode);

参数:

fname 可以加入文件路径,但只试过相对路径,绝对路径没试过,文件名用双引号(这好像是废话。。。)

mode 文件打开方式 打开方式有很多 这里只说一下 有些要注意的:

“w” 只读方式创建文件 真的是!创建!  当有已存在文件时会直接用空文件替代掉 只能说此参数慎用

”a“ 当有文件时 直接把指针指向文件尾部 没有文件时会创建该文件 这个挺好用 但是用的时候注意只能在文件尾部添加 想改以写入的信息就不行了 倒是可以用在日志文件信息的写入

“r+”文件可读可写 可以对数据任意读写 但是文件必须存在


2、fclose

int fclose(FILE * stream);

关闭文件流 没啥好说的 唯一要注意的是: 别把这玩意忘了


3、fwrite

int fwrite(const void * buffer,size_t size,size_t count,FILE * stream);

buffer:要写入数据的地址

size:单个数据的字节大小 这里不要忘了sizeof()一下数据类型

count:写入数据的个数

stream:文件指针


4、fread

int fread(void * buffer,size_t size,size_t num,FILE * stream);

buffer:存取数据的变量地址 这里注意一下数据所占的字节大小

size:单个数据的字节大小 这里不要忘了sizeof()一下数据类型

count:取出数据的个数

stream:文件指针


5、fseek

int fseek(FILE * stream,long offset,int origin);

stream:文件指针 这个函数改的就是这个结构体里的变量

offset:相对相对位置的字节(byte)数

origin:相对位置 有三种参数可选

SEEK_SET 文件头

SEEK_CUR 当前位置

SEEK_END 文件尾部

需要注意的是这个函数只会改变流的位置指针 不会改变文件的读取方向

也就是当你用SEEK_END时 如果的原来的尾部指针指向第3个数据 此时会指向3 + offset/sizeof(data)个数据(单蠢的我开始还以为会回头 T T)


6、ftell

long ftell(FILE * stream);

这个函数可以用来计算文件内数据的个数

返回的数是当前文件位置 距离文件头的数量 单位是byte

配合fseek可以很简单的计算出文件内数据的个数


fseek(pf,0,SEEK_END);

end = ftell(pf);

num = end / sizeof(data);

大概就是这样 num就是数据的个数

总结:

这几个函数基本可以实现对文件内容的任意修改和查看

至于fsetpos fgetpos 感觉一个fseek就直接搞定 所以并没有研究

更多的文件操作函数请参考:C语言参考手册  最好是英文原版的


PS:第一次写 嗯嗯~ o(* ̄▽ ̄*)o 值得纪念

0 0