JNI開發(fā)——C語言基礎三

typedef指令:

????????typedef 就是取一個別名。


運行結果:

跟函數(shù)指針使用:

運行結果:


高級點的使用:

這里就有點Java代理的意思了。

公用體:

將不同類型的數(shù)據(jù)放到同一段內(nèi)存里面。

運行結果:

公用體內(nèi)的元素地址相同,取值就近原則,取最后一個被賦值的的值。

文件IO:

打開文件:

可以使用 fopen( ) 函數(shù)來創(chuàng)建一個新的文件或者打開一個已有的文件,這個調(diào)用會初始化類型 FILE 的一個對象,類型 FILE 包含了所有用來控制流的必要的信息。下面是這個函數(shù)調(diào)用的原型:

? ? FILE *fopen( const char * filename, const char * mode );

在這里,filename 是字符串,用來命名文件,訪問模式 mode 的值可以是下列值中的一個:

模式 ? ? ? ? ? ? 描述

r ? ? ? ? ? ? ? ?? 打開一個已有的文本文件,允許讀取文件。

w ? ? ? ? ? ? ? ? 打開一個文本文件,允許寫入文件。如果文件不存在,則會創(chuàng)建一個新 ? ? ? ? ? ? ? ? ? ? ?? 文件。在這里,您的程序會從文件的開頭寫入內(nèi)容。

a?????????????????打開一個文本文件,以追加模式寫入文件。如果文件不存在,則會創(chuàng)建一 ? ? ? ? ? ? ? ? ?? 個新文件。在這里,您的程序會在已有的文件內(nèi)容中追加內(nèi)容。

r+????????????????打開一個文本文件,允許讀寫文件。

w+ ? ? ? ? ? ? ? 打開一個文本文件,允許讀寫文件。如果文件已存在,則文件會被截斷 ? ? ? ? ? ? ? ? ? ? ?? 為零長度,如果文件不存在,則會創(chuàng)建一個新文件。

a+ ? ? ? ? ? ? ? 打開一個文本文件,允許讀寫文件。如果文件不存在,則會創(chuàng)建一個新文 ? ? ? ? ? ? ? ? ?? 件。讀取會從文件的開頭開始,寫入則只能是追加模式。

如果處理的是二進制文件,則需使用下面的訪問模式來取代上面的訪問模式:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

關閉文件:

關閉文件,使用 fclose( ) 函數(shù)。函數(shù)的原型如下:

int fclose( FILE *fp );

如果成功關閉文件,fclose( ) 函數(shù)返回零,如果關閉文件時發(fā)生錯誤,函數(shù)返回 EOF。這個函數(shù)實際上,會清空緩沖區(qū)中的數(shù)據(jù),關閉文件,并釋放用于該文件的所有內(nèi)存。EOF 是一個定義在頭文件 stdio.h 中的常量。

寫入文件:

下面是把字符寫入到流中的最簡單的函數(shù):

int fputc( int c, FILE *fp );

函數(shù) fputc() 把參數(shù) c 的字符值寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回寫入的字符,如果發(fā)生錯誤,則會返回 EOF。您可以使用下面的函數(shù)來把一個以 null 結尾的字符串寫入到流中

int fputs( const char *s, FILE *fp );

函數(shù) fputs() 把字符串 s 寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回一個非負值,如果發(fā)生錯誤,則會返回 EOF

讀取文件:

下面是從文件讀取單個字符的最簡單的函數(shù):

int fgetc( FILE * fp );

fgetc() 函數(shù)從 fp 所指向的輸入文件中讀取一個字符。返回值是讀取的字符,如果發(fā)生錯誤則返回 EOF。下面的函數(shù)允許您從流中讀取一個字符串:

char *fgets( char *buf, int n, FILE *fp );

函數(shù) fgets() 從 fp 所指向的輸入流中讀取 n - 1 個字符。它會把讀取的字符串復制到緩沖區(qū) buf,并在最后追加一個 null 字符來終止字符串。

二進制 I/O 函數(shù):

size_t fread(void *ptr, size_t size_of_elements,

? ? ? ? ? ? size_t number_of_elements, FILE *a_file);

size_t fwrite(const void *ptr, size_t size_of_elements,

? ? ? ? ? ? size_t number_of_elements, FILE *a_file);

設置流 stream 的文件位置為給定的偏移:

int fseek(FILE *stream, long int offset, int whence)

offset -- 這是相對 whence 的偏移量,以字節(jié)為單位。

whence -- 這是表示開始添加偏移 offset 的位置。它一般指定為下列常量之一:

????????????????????SEEK_SET ?? 文件的開頭

????????????????????SEEK_CUR ? 文件指針的當前位置

? ? ? ? ? ? ? ? ? ? SEEK_END ?? 文件的末尾

如讀文件:

運行結果:


文件分解:

?? 控制信息:文件的屬性里面查看到的信息。

????內(nèi)容信息:如圖片顯示的內(nèi)容,文本顯示的內(nèi)容。

文件的加解密:

? ? ? ? 文件加密原理:按照規(guī)則改變二進制流。

加密:


原文件

運行的結果:

解密:

把上面的原文件解密還原


沒有搞錯,加密和解密的算法一樣的。

預處理:

#define MI? 10 就是把10等價替換為MI;

條件編譯:

#ifdef? _plus ? ?? 如果定義了_plus這個宏就執(zhí)行下面的代碼塊

#else

#endif ? ? ? ? ? ? ?? 結束語句。和#ifdef成對出現(xiàn)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容