专栏首页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 条评论
登录 后参与评论

相关文章

  • NDK启航篇——C语言基础

    longzeqiu
  • android Ndk JNI 入门

    相信很多人对于NDK 开发都是懵逼的,比如都知道把加密的逻辑以及密钥放在so文件中,但是你知道怎么生成so文件吗?你知道开发jni吗?你熟悉jni语法吗?怎么配...

    Anymarvel
  • android studio2.3如何编译动态库的过程详解

    最近在工作中需要编译android下的动态库,本以为是一件简单的事,没想到因为工具,以及google本身被墙的原因,折腾了好久。

    砸漏
  • Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!

    本文章是Unity与 SO 交互的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————????订阅专栏???? 就可以免费观看多篇相关内容...

    呆呆敲代码的小Y
  • UE开发笔记:Android篇

    在之前的一篇文章中,介绍了Mac/IOS的开发笔记和一些工程实践:UE4 开发笔记:Mac/iOS 篇。本篇文章作为姊妹篇,记录我在使用UE在开发Android...

    查利鹏
  • Android串口开发之使用JNI实现ANDROID和串口通信详解

    前段时间因为工作需要研究了一下android的串口通信,网上有很多讲串口通信的文章,我在做的时候也参考了很多文章,现在就将我学习过程中的一些心得分享给大家,由于...

    砸漏
  • Android系统启动流程

    而我们的Android系统启动的过程就是架构图中从下往上运行加载的过程,这里有一张关于Android系统启动过程的总结图(图片来自参考链接gityuan.com...

    码上积木
  • Android中JNI与NDK

    JNI的定义:Java Native Interface 也就是Java本地的接口。它的作用就是使Java与本地的其他语言(C C++)交互。

    全栈程序员站长
  • Android Ndk and Opencv Development 2

    本节主要介绍的内容是Android NDK开发的核心内容和开发总结(包括很多常见问题的解决方案)。

    宅男潇涧
  • Android JNI(一)——NDK与JNI基础

    Android 平台从一开就已经支持了C/C++了。我们知道Android的SDK主要是基于Java的,所以导致了在用Android SDK进行开发的工程师们都...

    隔壁老李头
  • 2017最全的Java学习方向

    方向不对努力白费,Java技术的学习并不是一蹴而就的,正确的学习方向能让你事半功倍,如果你想在自己的Java学习之初就了解学Java又好又快的方法,那么这篇文章...

    企鹅号小编
  • 一篇文章带你搞定Go语言基础之文件操作

    文件操作就简单了,像打开word了,excel了,都是文件操作,当然,我们肯定是不能直接操作word的

    Go进阶者
  • Android Studio 4.0 稳定版发布了

    Android Studio 4.0(2020年5月) 更新啦,此版本包含了各种新功能和改进,还有一些废弃配置。

    GSYTech
  • NDK Maping 发布啦

    用户1907613
  • android设备上如何运行C语言原生程序

    咱们知道android设备可以直接运行apk应用,或者使用dalvikvm指令运行dex文件中的程序, 但是这两者本质上使用的语言都是java或者smali, ...

    乱码三千
  • ndk代码支持断点调试

    背景 android的ndk代码编写一直被认为是很痛苦的一件事情,除了android程序员对c++的陌生外,还有一个主要原因是无法断点调试。无法断点调试很难发现...

    MelonTeam
  • Android:JNI 与 NDK到底是什么?(含实例教学)

    本文根据版本的不同介绍了两种在Android Studio中实现 NDK的方法:Android Studio2.2 以下 & 2.2以上

    Carson.Ho
  • 深入理解使用ndk-build编译NDK程序

    上一篇文章我给大家介绍了如何在Linux下进行Android程序的交叉编译(Linux/Mac 交叉编译 Android 程序)。 这种方式比较原始,技术门槛稍...

    音视频_李超
  • Android面试指南:在市场初级开发饱和环境下,如何登上BAT这座山成为巅峰者年薪50W+?

    在我刚加入现在这个团队时,那会儿才毕业大半年,我就在思考这个问题,只不过当时更专注于Android开发领域:Android开发的核心竞争力是什么?我有一个专门的...

    Android技术干货分享

扫码关注云+社区

领取腾讯云代金券