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

2020-04-09 11:44:54 浏览数 (1)

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

什么是文件IO

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

读写文本文件

  • 关键函数
    • fopen(文件路径,"r") r代表读取
    • fget(缓冲区,每次读取多少,文件地址)
    • fputs(写入的字符,文件地址)
    • fclose(文件地址)
代码语言:javascript复制
//读取文本文件
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();
}

}
  • 写入文本文件
代码语言:javascript复制
//写入文本文件
void main(){
  char path[] = "C:\picture\water\text.txt";
  //打开
  FILE *fp = fopen(path,"r");
  char * text = "jdkfsdnjfdsk";
  fputs(text,fp);

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

}

读写二进制文件

  • 文件复制
    • fopen(文件的地址 ,"rb");b字符表示操作二进制文件binary
    • fread(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址))
    • fwrite(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址)
代码语言:javascript复制
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(文件地址);
代码语言:javascript复制
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("%dn",filesize);
 getchar();
}

文件IO的作用

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

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

0 人点赞