⑨ NDK学习之C语言IO

来源:互联网 发布:爱淘宝怎么删除 编辑:程序博客网 时间:2024/05/18 00:13
//1.读写文本文件
//2.读写二进制文件
//C读写文本文件与二进制文件的差别仅仅体现在回车换行符
//1.写文本时,每遇到一个'\n',会将其转换成'\r\n'(回车换行)
//2.读文本时,每遇到一个'\r\n',会将其转换成'\n'
//3.但是读写二进制文件的例子(图片的复制)
1
#define _CRT_SECURE_NO_WARNINGS
2
#include<stdio.h>
3
#include<stdlib.h>
4
void main() {
5
    //文件路径
6
    char* path = "E:\\testc\\down.png";
7
    char* path_new = "E:\\testc\\down_new.png";
8
9
    //打开文件,返回文件指针,b代表是二进制的文件
10
    FILE* f_read = fopen(path,"rb");
11
    FILE* f_write = fopen(path_new, "rw");
12
    //文件是否打开成功
13
    if (f_read==NULL||f_write==NULL) {
14
        printf("文件打开失败");
15
        return;
16
        }
17
    //读取文件
18
    //缓冲区,注意读写二进制文件的时候,是用int类型的缓冲区
19
    int buff[50];
20
    //每次读取的长度
21
    int len = 0;
22
    //读到的内容放到缓冲区,缓冲区的单位大小(一个缓冲区大小读50个int的大小(4个字节)的数据)
23
    //也就是一次读50*4 200字节的数据
24
    //返回的len 是读取到的长度,小于等于50
25
    while ((len = fread(buff, sizeof(int), 50, f_read)) != 0) {
26
        //写文件
27
        fwrite(buff, sizeof(int), len, f_write);
28
    }
29
30
    //关闭文件
31
    fclose(f_read);
32
    fclose(f_write);
33
    getchar();
34
}
//获取文件大小
//函数一 fseek
//函数二 ftell
//文件加密
//用简单的异或运算进行加密,解密的话就是一个逆向过程
//规则:1^1=0,0^0=0,0^1=1,1^0=1 同为0,不同为1
1
#define _CRT_SECURE_NO_WARNINGS
2
#include<stdio.h>
3
#include<stdlib.h>
4
5
void crpypt(char* filePath,char* crpyptFilePath) {
6
    //打开文件
7
    FILE* f_read = fopen(filePath,"r");
8
    FILE* f_write = fopen(crpyptFilePath, "w");
9
    if (f_read==NULL||f_write==NULL)
10
    {
11
        printf("文件打开失败");
12
        return;
13
    }
14
    int ch;//一次读取一个字符,每一个字符都是一个数据,用int来表示
15
    while ((ch = fgetc(f_read))!=EOF)
16
    {
17
        fputc(ch^9,f_write);
18
    }
19
20
    //关闭文件
21
    fclose(f_read);
22
    fclose(f_write);
23
}
24
25
void main() {
26
    //文件路径
27
    char* path = "E:\\testc\\test.txt";
28
    char* path_crpypt = "E:\\testc\\test_crpypt.txt";
29
    char* path_decrpypt = "E:\\testc\\test_decrpypt.txt";
30
    
31
    //文件加密
32
    crpypt(path,path_crpypt);
33
    //文件解密decrpypt,是一个逆过程,注意先把原来的文件删除
34
    crpypt(path_crpypt,path_decrpypt);
35
    getchar();
36
}
//二进制文件加密
//读取二进制文件中的数据时,一个一个字符读取
//密码 password
1
#define _CRT_SECURE_NO_WARNINGS
2
#include<stdio.h>
3
#include<stdlib.h>
4
5
void crpypt(char* normal_path, char* crpypt_path,char password[]) {
6
    //打开文件
7
    FILE* normal_fp = fopen(normal_path,"rb");
8
    FILE* crpypt_fp = fopen(crpypt_path, "wb");
9
    //一次读取一个字符
10
    int ch;
11
    //循环使用密码中的字母进行异或运算
12
    int i = 0;
13
    //密码的长度
14
    int pwd_len = strlen(password);
15
    while ((ch=fgetc(normal_fp))!=EOF) //end of file
16
    {   
17
        //写入(异或运算)
18
        fputc(ch^password[i%pwd_len],crpypt_fp);
19
        i++;
20
    }
21
    //关闭文件
22
    fclose(normal_fp);
23
    fclose(crpypt_fp);
24
}
25
26
void main(){
27
    //文件路径
28
    char* path = "E:\\testc\\down.png";
29
    char* path_crpypt = "E:\\testc\\down_crpypt.png";
30
    char* path_decrpypt = "E:\\testc\\down_decrpypt.png";
31
    //加密文件
32
    crpypt(path,path_crpypt,"boomjia");
33
    //解密文件
34
    crpypt(path_crpypt, path_decrpypt, "boomjia");
35
    getchar();
36
}
总结:
1.普通的:fopen(path,"r")  fclose(f_readfopen(path,"w")  fclose(f_write)
 二进制:fopen(path,"rb")  fclose(f_read) fopen(path,"wb")  fclose(f_write)
2.FILE* fp  返回的是文件指针
3.fgets()  fputs()
4.fgetc()  fputc()
5.buff  缓冲区
6.fread函数    fread(buff, sizeof(int), 50, f_read)
7.fwrite函数   fwrite(buff, sizeof(int), len, f_write)
原创粉丝点击