android JNI之C 語言回顧:檔案的讀寫和隨機數函數

來源:互聯網
上載者:User

由於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

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.