1.文件打开,读取,写入
siz_t fread(void *buffer,size_t size,size_t count, FILE* stream);
:以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止.可用于文件复制char *fgets(char *string, int n, FILE *stream);
:从流中读取一字符串,整行读取,遇到回车换行或结尾停止.在文本方式时使用.int fputs(char *string, FILE *stream);
:将一个字符串写到一个文件流中FILE *fopen(char *filename, char *type);
:打开文件int fclose(FILE *stream);
:关闭文件
打开:
FILE* fopen(const char* filename,const char* mode);
// 打开文件 (文件名,模式)mode r(读) w(写) rb(作为二进制读) wb(作为二进制写) a(追加)
注意: "wb" 模式 会新建一个文件 0KB
模式:
- “w” 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
- “wb” 只写打开或新建一个二进制文件;只允许写数据。若文件不存在则建立该文件。,不会清空文件
- “wb+” 读写打开或建立一个二进制文件,允许读和写
- “a” 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
- ”a+“ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
1.1.文件读取
1 | const char* file_name = "F:\\Sample.txt"; // 源文件 |
1.2.文件写入
1 | int main(){ |
2.文件复制,当做二进制文件来操作
int fread(void *ptr, int size, int nitems, FILE *stream);
:二进制流读取int fwrite(void *ptr, int size, int nitems, FILE *stream);
: 二进制流写入
1 | int main(){ |
3.获取文件大小
int fseek(FILE *stream, long offset, int fromwhere);
:重定位流上的文件指针long ftell(FILE *stream);
: 返回当前文件指针,大小是字节
1 | int main(){ |
4.文件加密、解密(该方法文件适合图片,如果文件中有中文就不适合)
4.1.加密
int fgetc(FILE *stream);
:从文件流中读取字符int fputc(int ch, FILE *stream);
:将字符写到一个文件流中
思路:文件每个字节拿出来^5
,^(相同为0,不同为1)
1 | // 为了防止图片泄密,图片进行加密 |
4.2.解密
思路:文件每个字节拿出来^5
,^(相同为0,不同为1)
1 | int main(){ |
5.字符串秘钥对文件进行加密、解密
5.1.字符串秘钥对文件加密
思路:文件每个字节拿出来按照顺序轮流跟字符串秘钥进行^
操作,^(相同为0,不同为1)
1 | int main(){ |
5.2.字符串秘钥对文件解密
思路:文件每个字节拿出来按照顺序轮流跟字符串秘钥进行^
操作,^(相同为0,不同为1)
1 | int main(){ |
6. 文件切割、合并
int sprintf(char *string, char *farmat [,argument,...]);
:将格式化输出到字符串中
1 | int getFileSize(const char* fileName){ |
6.1.文件切割
1 | int main(){ |
6.2.文件合并
1 | int main(){ |