专栏首页Android小知识NDK启航篇——C语言终章(文件IO操作)

NDK启航篇——C语言终章(文件IO操作)

今天写最后的部分文件IO操作

什么是文件IO

  • 就是对存储在计算机物理上的二进制文件进行读写操作
    • 文件逻辑上分为文本文件二进制之分
    • C读写文本文件二进制文件的差别仅仅体现在回车换行符
    • 写文本时,每遇到一个\n,会将其转换成\r\n(回车换行)
    • 读文本时,每遇到一个\r\n,会将其转换成\n

读写文本文件

  • 关键函数
    • fopen(文件路径,"r") r代表读取
    • fget(缓冲区,每次读取多少,文件地址)
    • fputs(写入的字符,文件地址)
    • fclose(文件地址)
//读取文本文件
void main(){
  char path[] = "C:\\picture\\water\\text.txt";
  //打开
  FILE *fp = fopen(path,"r");
  if(fp == NULL){
    printf("文件打开失败");
    return;
}
  //读取
  char buff[50];//缓冲
  while(fget(buff,50,fp)){
    printf("%s",buff);
}
  //关闭
  fclose(fp);
  
  getchar();
}

}
  • 写入文本文件
//写入文本文件
void main(){
  char path[] = "C:\\picture\\water\\text.txt";
  //打开
  FILE *fp = fopen(path,"r");
  char * text = "jdkfsd\njfdsk";
  fputs(text,fp);

  //关闭
  fclose(fp);
  
  getchar();

}

读写二进制文件

  • 文件复制
    • fopen(文件的地址 ,"rb");b字符表示操作二进制文件binary
    • fread(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址))
    • fwrite(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址)
void main(){
  char *read_path = "C:\\picture\\water\\text.exe";
  char *write_path = "C:\\picture\\water\\text2.exe";
  //读文件 b字符表示操作二进制文件binary
  FILE *read_fp = fopen(read_path ,"rb");
//写的文件
    FILE *write_fp = fopen(write_path,"wb");
  //复制缓冲区域
  int buff[50];
  //每次读到的数据长度
  int len = 0;
  while((len = fread(buff,sizeof(int),50,read_fp)) ! = 0){
    //将读到的内容写到新的文件
    fwrite(buff,sizeof(int),len,write_fp);
}
  //关闭流
  fclose(read_fp);
  fclose(write_fp);
  
  getchar();

}
  • 获取文件的大小
    • fseek(文件地址,偏移量,SEEK_END);//SEEK_END定位到文件末尾,0代表没有偏移量
    • ftell(文件地址);
void main(){
 char *read_path = "C:\\picture\\water\\text.exe";
 FILE *read_fp = fopen(read_path ,"rb");
//重新定位文件指针
//SEEK_END定位到文件末尾,0代表没有偏移量
 fseek(read_fp,0,SEEK_END);
  //返回当前的文件指针,相对于文件开头的位移量
 long filesize = ftell(read_fp); 
 printf("%d\n",filesize);
 getchar();
}

文件IO的作用

  • 进行文件的加解密
  • 进行文件的分割等等

好啦,C语言的基础知识我们已经搞定了,在看C的代码应该大部分都可以看懂,后续会写一些C++ 的知识点,NDK的大船已经扬起了帆,让我们开启这神秘的旅程吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android下载文件,打开后文件不存在

    第一次遇到这种问题,给大家提供下产生原因,以免查找时浪费时间。 我下载的文件命名是采取PC端传过来的案件名称来给文件命名的,当案件名称中包含特殊字符的情况就会...

    longzeqiu
  • ERROR: android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationPro

    longzeqiu
  • Could not find manifest-merger.jar

    longzeqiu
  • 人脸识别等海量小文件场景,需要怎样的存储?

    根据IDC在2018年底的预测显示,由于大数据、AI、物联网、5G等因素的驱动,全球的数据量在2025年将高达175ZB(1ZB=1024EB,1EB=1024...

    大数据在线
  • 看图说话:文件包含(File Inclusion)漏洞示例

    作为测试人员,我们常常听到“安全测试”这个词,但鲜有人真正做过安全测试。从我们的职责“保障质量”角度来说,说是一种“失职”也不为过。那么安全测试是什么,究竟怎么...

    张树臣
  • xshell-常用命令

    ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当前目录下以字母a开头的所有文件 ls -l *.doc ...

    Java编程指南
  • 在不动用sp_configure的情况下,如何 =》去掉列的自增长,并保留原数据

    应用场景:权限不够(只是某个用户,权限很低,不能使用sp_configure) ? 执行 ? 附录: update BackupShopMenu set Tem...

    逸鹏
  • 编程小技巧之 Linux 文本处理命令

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也。合理的利用 Linux 的命令行工具,可以提高我们的工作效率。

    程序员历小冰
  • 编程小技巧之 Linux 文本处理命令

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也。合理的利用 Linux 的命令行工具,可以提高我们的工作效率。

    黄泽杰
  • 以后社会都是无人驾驶,无人售货,那人都干嘛去?

    如果我们站在今天这个时点回头望,会发现人类技术的进步从来都是如此,今天的“无人技术”并没有多少的不同。 ? 例如,无人超市的火爆背后,围绕着这个新技术所带动的 ...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券