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)