⑨ NDK学习之C语言IO

移动开发 waitig 472℃ 百度已收录 0评论

//1.读写文本文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

//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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//文件加密//用简单的异或运算进行加密,解密的话就是一个逆向过程//规则: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)

0
0

 
 

  相关文章推荐


  • c语言文件IO库函数——APUE学习笔记(1)

  • C语言大型软件设计的面向对象–宋宝华

  • c语言学习笔记(标准文件io)

  • 【免费直播】神经网络的原理及结构设计–何宇健

  • JNI NDK C语言调用JAVA方法

  • C/C++学习指南全套教程

  • Android 之NDK实战系列(1)——常见的C语言操作

  • Spring Boot 2小时入门基础教程

  • NDK开发系列之第三课C语言的指针运算

  • 深度学习项目实战-人脸检测

  • NDK开发系列之第二课C语言的基本语法与指针

  • JDK9新特性 JDK9新特性

  • Android NDK编程小试—实现java和c语言的互掉

  • NDK探究之旅《二》——C语言的基本认识

  • android ndk 03 C语言 动态分配内存,字符串操作

  • android ndk 01 c语言 基本数据类型_输入输出_指针


查看评论

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

快速回复

TOP

.tag_list
{
background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #D7CBC1;
color: #000000;
font-size: 12px;
line-height: 20px;
list-style: none outside none;
margin: 10px 2% 0 1%;
padding: 1px;
}
.tag_list h5
{
background: none repeat scroll 0 0 #E0DBD3;
color: #47381C;
font-size: 12px;
height: 24px;
line-height: 24px;
padding: 0 5px;
margin: 0;
}
.tag_list h5 a
{
color: #47381C;
}
.classify
{
margin: 10px 0;
padding: 4px 12px 8px;
}
.classify a
{
margin-right: 20px;
white-space: nowrap;
}

#popup_mask
{
position: absolute;
width: 100%;
height: 100%;
background: #000;
z-index: 9999;
left: 0px;
top: 0px;
opacity: 0.3;
filter: alpha(opacity=30);
display: none;
}


本文由【waitig】发表在等英博客
本文固定链接:⑨ NDK学习之C语言IO
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)