Linux程式設計 標準IO(2)

2021-06-27 17:33:45 字數 1795 閱讀 9690

簡單的檔案讀寫例項

#include "stdiotest.h"

#include

#include

void readlog()

printf("open file success\n");

//單位元組讀取測試

int ichar = fgetc(plog);

if (eof == ichar)

//位元組回送測試

int iput = ungetc(ichar, plog);

if (eof == iput)

fseek(plog, 0, seek_end);

//單字元寫測試

iput = fputc(ichar, plog);

if (eof == iput)

char szbuf[100] = ;

//行寫測試

fseek(plog, 0, seek_end,);

if (eof == fputs(szbuf, plog))

printf("pet string: %s\n", szbuf);

//讀行測試

fseek(plog, 0, seek_set);

if (null == fgets(szbuf, 100, plog))

printf("get string: %s\n", szbuf);

//二進位制寫測試(可以用於直接寫資料結構或二進位制資料)

fseek(plog, 0, seek_end);

char szbuf2 = "writebin";

if (fwrite(szbuf2, sizeof(char), strlen(szbuf2), plog) != strlen(szbuf2))

printf("write bin :%s\n", szbuf2);

//二進位制寫測試

fseek(plog, 0, seek_set);

if (fread(szbuf, sizeof(char), 100, plog) == eof)

printf("read bin: %s\n", szbuf);

fclose(plog);

return;

}經過測試:

linux(ubuntu)下,存在如下情況:

一、特性標示說明:

r :支援讀

w:支援寫、建立檔案,截斷檔案(清空內容)

a :支援寫、支援自動在檔案末尾新增

b :傳說linux沒有文字和二進位制之分,不考究

r+:支援特性:讀、寫

w+:支援特性:讀、寫、建立檔案、截斷檔案

a+:支援讀、寫、建立檔案(不存在時),自動在檔案末尾新增(不需要手動呼叫seek)

ra+、r+a 、rw+、r+w 等價r+,可見,第乙個關鍵屬性為有效字元,由man手冊提供的說明中,沒有出現兩個字元的組合。可見,該特性的解析演算法明顯大致是:

(1) 查詢「r、w、a」,找到乙個則停止(由測試可知,特性中,最先出現的字元為有效特性,如rw = r)

(2.)找到再找「+」

(3)查詢「b」

二、流的開啟方式無法自由組合所有特性,可通過基本檔案io開啟後再轉化為流進行操作。

三、其他一下api     

void clearerr(file *stream);清除之前的錯誤碼

int feof(file *stream);判斷檔案是否達到末尾

int ferror(file *stream);獲取錯誤碼

int fileno(file *stream);將檔案指標轉化為檔案描述符

linux程式設計 標準IO

標準io簡介 1.標準io與三種緩衝區關聯 1 全緩衝 通過標準io對檔案 或裝置 進行操作時,通常緩衝區滿之後,才會進行實際的io操作 即寫到核心 對檔案進行操作時通常使用全緩衝。2 行緩衝 通過標準io對檔案 或裝置 進行操作時,通常緩衝區滿之後,或者遇到換行符時,才會進行實際的io操作 即寫到...

Linux標準I O程式設計

標準io的核心物件就是流 file結構體 1.流的開啟函式原型 file fopen const char path,const char mode 函式引數 path 要開啟的檔案路徑及檔名 mode 檔案開啟方式 函式返回值 成功 指向file指標 失敗 nullmode值 取值說明 r開啟唯讀...

Linux程式設計 標準IO(3)

讀寫定位及格式化輸出 1.讀寫定位函式 int fseek file stream,long offset,int whence 設定檔案讀寫位置 long ftell file stream 獲取檔案讀寫位置 void rewind file stream 回到檔案開頭 可處理檔案長度大於long...