本想着明天若有时间的话,明天写的,但是,看了看代码,发现很简单。。。所以我就干脆提上日程,今晚把这个给分析了。
如上图,我把代码按分号分行也才十来行。一看就很简单嘛。一些简单的注释我写在了后面。我一个一个解释下,权当给自己再学习学习。
- fopen(文件名,使用文件方式)
打开一个文件,返回一个FILE文件指针,第一个参数是文件的地址,可以是绝对地址或者相对地址。第二个参数是打开的方式。如下图,举几个例子:
FILE *f1 = fopen("C:\\Users\\Doucment\\test1.txt", "rb"); //这是绝对地址
FILE *f1 = fopen("./test1.txt", "rb"); //这是相对地址,注意的是 ./ 指的是程序所在的目录
-
fseek(FILE *stream, long offset, int fromwhere)
此函数的功能是重定位的文件位置指针,第一个参数stream为文件指针 ,第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移,第三个参数fromwhere设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET。SEEK_SET指的文件开头,SEEK_CUR指的 当前位置,SEEK_END指的文件结尾。
-
long ftell(file)
得到文件位置指针当前位置相对于文件首的偏移字节数,一个参数看起来还是很舒服的。。哈哈
- int fread ( void *buffer, size_t size, size_t count, FILE *stream)
buffer 用于接收数据的内存地址,size 要读的每个数据项的字节数,单位是字节,count 要读count个数据项,每个数据项size个字节stream 输入流。所以总的数据大小应该是size X count 字节。若正确返回时真实读取的项数,大于count则是错误的。
最会注意一定要记得关文件流,也就是图中框出的部分,因为在标准c里面存在缓冲区一说,如下图,不加fclose(fp)以及不关闭程序的话,不会将所写的内容写入文件,当然如果缓冲区满了的话会自动刷新,也就是会不加fclose(fp)也写进缓冲区。
哈哈,接下来不就是很熟悉的doit()函数嘛,哈哈,这个就无需解释了吧。恩恩,所以说这个简单嘛,写完啦!告辞,溜了溜了。btw,我总觉得doit()函数没有分析权,哎呀,后面有时间再看看哪些是没分析到的。