1. 程式人生 > >C語言(四 檔案操作、遞迴)

C語言(四 檔案操作、遞迴)

檔案讀寫

我們用**fopen()**來新建一個檔案或開啟一個已有的檔案.
函式原型為File *fopen(const char *filename , const char *mode)
filename是檔名,mode代表訪問方式。

mode 訪問模式
r 開啟一個已有的文字檔案,允許讀取檔案
w 若無此檔案,新建一個檔案,從檔案頭開始寫;若有此檔案,截斷檔案為零長度,重新寫入
a 開啟一個文字檔案,以追加模式寫入,若無此檔案,新建一個檔案
r+ 開啟一個文字檔案,允許讀寫檔案
w+ 開啟一個文字檔案,允許讀寫檔案,若沒有此檔案,新建一個檔案
a+ 開啟一個文字檔案,允許讀寫檔案,寫檔案時,只允許以追加模式寫入

若訪問二進位制檔案,mode後加上b就可以了

fclose(FILE *fl)

關閉檔案成功返回0,關閉失敗返回EOF。呼叫此函式,先清空快取區資料,再關閉檔案,再釋放用於該檔案的所用記憶體。

fputc(int ch,FILE *fl)

將字元ch的值寫入指向fl的輸出流中,若寫入成功,返回ch的值,寫入失敗則返回EOF。

fputs(const *char ch , FILE *fl)

將字串ch寫入到指向fl的輸出流中,若寫入成功返回不為零,寫入失敗返回EOF。

fgetc(FILE *fl)

從寫入檔案的輸入流中獲取一個單個字元,返回值為讀取到的字元,失敗返回EOF

fgets(FILE *fl)

從輸入流中獲取一串字元直到遇到終止符或EOF,遇到空格也會停止,只返回讀取到的字元。先讀取一串字元除了最後的字元或空格,放至快取區,在末尾加上null字元返回字串。
引用標頭檔案
兩種方式:

#include <file>
#include "file"

一般我們用global.h來匯入所有標頭檔案。
還有許多前處理器命令:#define巨集定義,#include匯入原始碼檔案,#undef取消已定義的巨集,#ifdef如果已定義,#ifndef若沒有定義,#if,#else,#elif,#endif結束一個if-else塊,#error若發生標準錯誤,產生標準錯誤資訊,#pragma使用標準化方法,向編譯器釋出特殊的命令到編譯器中
遞迴


函式自身呼叫本身成為遞迴。
求階乘,經典的斐波那契數列都是用遞迴的思想來做的,但與while迭代相比,他佔用了更多的棧空間,尾遞迴可以在一定程度上減少堆疊的浪費,尾遞迴就是函式的返回結果不是表示式的一部分的遞迴函式。