calderon函式也可以動態分配記憶體
這個函式可以把分配的所有記憶體內容都設定成0
這個函式也需要包含
stdlib.h標頭檔案
這個函式需要兩個引數,第乙個引數表示希望分配的儲存區個數,第二個引數表示單個儲存區的大小
這個函式的返回值是分配好的第乙個儲存區的位址
這個函式也可能失敗,如果失敗則返回值是
null
realloc函式可以調整一段動態分配記憶體的大小
,(盡量少使用這個函式)
所有檔案都採用二進位制方式記錄資料
如果檔案裡所有二進位制資料都有對應的字元就把這種檔案叫做文字檔案
除了文字檔案之外的所有檔案都叫做二進位制檔案
文字檔案和二進位制檔案各自採用不同的方法進行操作(可以把文字檔案當作二進位制檔案
進行操作)
檔案操作基本步驟
1.開啟檔案
(fopen)
2.操作檔案
(fread/fwrite)
3.關閉檔案
(fclose)
fopen函式需要兩個引數
1.代表要開啟的檔案路徑
2.代表開啟方式
(決定程式中可以對檔案做什麼操作)
開啟方式有如下選擇
"r" 只能察看檔案內容不能修改
只能從檔案頭開始察看
如果檔案不存在則開啟會失敗
"r+" 比
"r"多了修改功能
"w" 只能修改檔案內容不能察看
只能從檔案頭開始修改
如果檔案不存在就建立檔案
如果檔案存在就刪除檔案的所有內容
"w+" 比
"w"多了察看功能
"a" 只能修改不能察看
只能在檔案末尾追加新的內容
如果檔案不存在就建立新檔案
如果檔案已經存在不會修改
檔案原有內容
"a+" 比
"a"多了察看功能
"b"也是一種開啟方式
這種開啟方式可以和上面的任何一種開啟方式混用
這個開啟方式表示程式中要採用二進位制的方式操作檔案
fopen函式的返回值應該記錄在檔案指標裡,只有檔案指標才能在程式中代表開啟的檔案
fopen函式有可能失敗,如果失敗則返回值是
null
完成對檔案的所有操作之後必須使用
fclose函式關閉檔案
fclose函式需要檔案指標作為引數
檔案關閉之後檔案指標成為野指標,必須恢復成空指標
檔案操作分為兩種
1.把記憶體中一組連續儲存區的內容拷貝到檔案裡
(寫檔案
)2.把檔案裡一組連續儲存區的內容拷貝到記憶體裡
(讀檔案)
fread函式可以採用二進位制的方式讀檔案內容
fwrite函式可以採用二進位制的方式寫檔案內容
這兩個函式都需要四個引數
1.記憶體裡第乙個儲存區的位址
2.單個儲存區的大小
3.希望操作的儲存區個數
4.檔案指標
這兩個函式的返回值表示實際操作的儲存區個數
fprintf函式可以按照格式把資料記錄到文字檔案裡
這個函式的第乙個引數就是檔案指標,其他引數就是
printf函式的引數
fscanf函式可以按照格式從文字檔案裡獲得數字並記錄到變數儲存區里
這個函式的第乙個引數是檔案指標,後面的引數和
scanf函式的引數一樣
計算機裡為每個開啟的檔案保留乙個整數,這個整數表示下一次檔案讀寫操作的開始位置
這個位置一定在兩個相鄰位元組之間
這個整數的數值就是檔案頭到這個位置之間包含的位元組個數
這個整數叫做檔案的位置指標
每當從檔案中得到
n個位元組或向檔案裡寫入
n個位元組後位置指標都會增加n
ftell函式可以獲得當前位置指標的數值
rewind函式可以把位置指標的數值設定成0
fseek函式可以把位置指標設定到任意位置
fseek函式呼叫語句裡需要指定乙個基準位置以及目標位置到基準位置之間的距離
seek_set 0 把檔案頭作為基準位置
seek_cur 1 把當前位置作為基準位置
seek_end 2 把檔案尾作為基準位置
如果目標位置在基準位置後邊則距離用 正數表示
如果目標位置在基準位置前邊則距離用負數表示
距離的絕對值就是兩個位置之間包含的位元組個數
C語言基礎(十)檔案的操作
1 檔案流 像水流一樣把乙個大的檔案分成一段一段流過去就叫檔案流 2 操作檔案 1 fopen函式 fopen 路徑,操作方式 fopen函式的返回值是乙個檔案指標,用file指標來接收 例 file fp fopen users ios001 destop 1.txt r 操作方式 r 以唯讀的方...
c基礎 6 檔案操作
1.讀檔案 2.寫檔案 三.fputs,fgets 行讀取和寫入 四.fprintf,fscanf格式化讀寫檔案內容 二.fwrite,fread二進位制的讀寫 stat 函式 fseek,ftell,rewind remove rename fflush 檔案流 重新整理快取 int main2 ...
C基礎12 檔案操作
strstr 定義說的有點羞澀難懂。舉個例子就知道了。比如 char str2 cdef char str1 abcdefgh 則通過函式,將返回 strstr str1,str2 cdefgh 如果str1不包含有str2。char str2 cxef char str1 abcdefgh 則通過...