1. fread(); fwrite(); --------------------------- #include <stdio.h>
fread() 从文件中读取,放入ptr;fwrite()从ptr读取,写入文件中
按对象读写:
当剩下的字节不够单个元素的大小时,fread,fwrite不对剩下的进行读取
先写再读(fread之后才能printf),存在文件偏移量,可先关闭文件再打开(方法一)
2. rewind();----------------------------------------------------------------
rewind 设置文件偏移量到开头(方法二)
rewind(fp);
3. ftell ()当前位置偏移量-----------
4. fseek();--------------------------------------------
fseek后,进行getchar(), 相当于又往后偏了1
创空洞文件,进行拷贝
目标文件要用 “w” 进行截断,先定位源文件末尾,用ftell获得总偏移量,目标文件再偏移(总量-1)个大小,最后一个偏移量的位置写入‘\0’,(光偏移不写入数据,则文件大小无变化)这样就创建好了相等大小的空洞文件。然后用rewind 使两个文件的光标回到开头,进行拷贝
----------------------------------------------------------------------------------
当用fread输出字符串(用printf %s)时,要留最后一个位置给 ‘\0’ (改两个地方,元素个数-1和 a[ret] = '\0')
char a[50] = {0};
当用fwrite输出时,不能把一次写入的元素个数定死了,否则会剩余字节写不到,要用有效字符个数ret
---------------------------------------------------------------------------------
用fread,fwrite实现文件拷贝
文件拷贝不需要用printf输出字符串,所以不用 ‘\0’, fread不
总结:
fread/fwrite
成功返回读写的元素个数 | 失败返回0
fseek
成功返回0 | 失败返回-1 & errno