`
java-mans
  • 浏览: 11436586 次
文章分类
社区版块
存档分类
最新评论

android JNI之C 语言回顾:文件的读写和随机数函数

 
阅读更多

由于C语言更适于操作硬件,且在一些处理文件的操作上效率比较高,所以在类似操作一般使用JNI调用C代码进行操作: 比如音频,视频以及图像的处理:

具体如音频格式的转码器,类似于photo关于图片效果的渲染等应用中,需要大量应用JNI.


在此回顾下C语言操作文件的内容:


C文件的操作模式:

“rt”只读打开一个文本文件,只允许读数据
“wt”只写打开或建立一个文本文件,只允许写数据
“at”追加打开一个文本文件,并在文件末尾写数据
“rb”只读打开一个二进制文件,只允许读数据
“wb”只写打开或建立一个二进制文件,只允许写数据
“ab”追加打开一个二进制文件,并在文件末尾写数据
“rt+”读写打开一个文本文件,允许读和写
“wt+”读写打开或建立一个文本文件,允许读写
“at+”读写打开一个文本文件,允许读,或在文件末追加数据
“rb+”读写打开一个二进制文件,允许读和写
“wb+”读写打开或建立一个二进制文件,允许读和写
“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:

文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

r(read):读
w(write):写
a(append):追加
t(text):文本文件,可省略不写
b(banary):二进制文件




C语言之文件的写入:


//java File file = new File(); ->c打开一个文件
// fos = FileOutPutstrem(file) ->c得到文件的输出流 int len = fos.write() //写了多长的数据
// fos.write(); -c写文件. fos.flush();


#include<stdio.h>
main(){
//FILE * fopen(char * filename, char * type);
//SharedPreference WORLD_READABLE WORLD_WRITEABLE APPEND PRIVATE

FILE* fp = fopen("1.txt","wt");
//int fwrite(void* ptr, int size, int nitems, FILE *stream);

//返回值 int 代表的是成功的写了多少次的数据.

// void* ptr 要写到文件的数据 可以char* int*
// size 一次写的数据的长度.
// nitems 代表的是写多少次
// stream 写到那一个文件里面.
char* str="hello";
int result = fwrite(str,sizeof(char),5,fp);
printf("写了%d次\n",result);
//一定要调用.如果不调用 就会导致这个文件被占用.
fclose(fp);

system("pause");
}


C语言之读取文件:
#include<stdio.h>
main(){
//FILE * fopen(char * filename, char * type);
//SharedPreference WORLD_READABLE WORLD_WRITEABLE APPEND PRIVATE

FILE* fp = fopen("1.txt","rt");
// int fread(void *ptr, int size, int nitems, FILE *stream);
//返回值 int 代表真的读取了多少次 size的长度
//*ptr 数据读到哪个内存空间里面
// size 一次读取的数据的长度是多个字节
// nitmes读取多少次数据
// stream 从哪个文件里面读
char* str =(char*) malloc(sizeof(char)*10); //分配内存
int read = fread(str, sizeof(char),5,fp);

printf("读了%d次\n",read);


printf("str=%s\n",str);
free(str); //手动释放分配的内存
fclose(fp);//关闭流
system("pause");
}


#include <stdlib.h>
#include <stdio.h>



C语言中的随机数函数:

使用rand()函数需要导入stdlib.h,stdio.h两个头文件


#include <stdlib.h>
#include <stdio.h>

int getPressure(){
//底层c的实现代码,内部工作的原理可能非常复杂,我们不关心他.

//关心 方法的方法名 参数 还有返回值
return rand()%300; //0~300

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics