Linux下普通IO文件操作函數---C語言

来源:https://www.cnblogs.com/XLX-0327/archive/2019/03/31/10631365.html
-Advertisement-
Play Games

普通文件IO總結 FILE結構體 打開文件fopen函數 文件指針名=fopen(文件名,使用文件方式) eg: 打開方式有: fopen若過出錯則,返回一個NULL可以用作錯誤異常處理的判斷條件; fclose函數 用於關閉當前文件 fclose(FILE*);返回值為0表示正確,非零錯誤。 文件 ...


普通文件IO總結

FILE結構體

    typedef struct 
  {  
    int level; /*填充/清空一級緩存*/
    unsigned flag; /*文件狀態指針*/
    char fd; /*文件描述符*/
    unsigned char hold; /*ungetc char if no buffer*/
    int bsize; /*緩存區大小*/
    unsigned char *buffer; /*數據緩衝區*/
    unsigned char *curp; /*當前活動指針*/
    unsigned istemp; /*臨時文件指示器*/
    short token; /*用於有效性檢查*/
  }FILE;  

打開文件fopen函數

文件指針名=fopen(文件名,使用文件方式)

eg:

FILE *fp;               //文件指針
fp=("file a","r"); //以只讀方式打開hzk16

打開方式有:

描述符意義
“rt” 只讀打開一個文本文件,只允許讀數據
“wt” 只寫打開或建立一個文本文件,只允許寫數據
“at” 追加打開一個文本文件,併在文件末尾寫數據
“rb” 只讀打開一個二進位文件,只允許讀數據
“wb” 只寫打開或建立一個二進位文件,只允許寫數據
“ab” 追加打開一個二進位文件,併在文件末尾寫數據
“rt+” 讀寫打開一個文本文件,允許讀和寫
“wt+” 讀寫打開或建立一個文本文件,允許讀寫
“at+” 讀寫打開一個文本文件,允許讀,或在文件末追加數 據
“rb+” 讀寫打開一個二進位文件,允許讀和寫
“wb+” 讀寫打開或建立一個二進位文件,允許讀和寫
“ab+” 讀寫打開一個二進位文件,允許讀,或在文件末追加數據

fopen若過出錯則,返回一個NULL可以用作錯誤異常處理的判斷條件;

fclose函數

用於關閉當前文件 fclose(FILE*);返回值為0表示正確,非零錯誤。

文件讀寫操作:

·字元讀寫函數 :fgetc和fputc ·字元串讀寫函數:fgets和fputs ·數據塊讀寫函數:freed和fwrite ·格式化讀寫函數:fscanf和fprinf

fgetc(FILR*)與fputc(const char,FILE*)/fputc(char,FILE*):

fgetc每次在文件中讀一個位元組,每讀一次文件內的字元指針往後挪一位,可多次重覆使用依此讀出文件內容。

fput函數每次寫入一個字元,每寫一次文件內指針向後挪動一位,可多次連續使用寫入。

fgets(char* buf, int n, FILE*)與fputs(char* buf, FILE*):

從文件中讀出 n-1 個字元放入buf中

fputs將字元串寫入文件中

fread(cahr* buf, int size, int count,FILE* fp)與fwrite(char* buf, int size, int count,FILE* fp)

fread 從fp中讀入conut個size長度的字元串到buf中

fwirte從buf中讀出count個size個長度的字元串到fp中

fscanf(FILE*, 格式, 列表)和 fprintf(FILE*, 格式, 列表)

eg:

fprintf(fp,"%s %d %d %s",pp->name,pp->num,pp->age,pp->addr);

fscanf(fp,"%s %d %d %s",qq->name,&qq->num,&qq->age,qq->addr);

rewind(FILE*)

將文件內部指針移到文件首

fseek(FILE* fp,int count,int startpoint)

fp 文件指針

count 位移量,表示從startpoint開始計算位移量

startpoint有三種形式:

起始點表示符
SEEK—SET 0
當前 SSEEK-CUR 1
SSEEK-END 2

設置bu模式函數

#include <stdio.h>

void setbuf(FILE *stream, char *buf);

int setvbuf(FILE *stream, char *buf, int mode, size_t size);

void setbuffer(FILE *stream, char *buf, size_t size);

void setlinebuf(FILE *stream);

     

setbuf 與 setvbuf 指定緩衝區(在讀寫文件之前),將不再使用系統預設的緩衝區

setbuf(fp, NULL) 使得文件不帶緩衝區

setbuf(ffp , NULL, _IONBF , 0 ) 在此情況下與setbuf(fp, NULL)相同

setbuf 中參數:

stream表示操作文件;

buf 緩衝區,;

mode 模式;

size 大小。

setbuffer函數

此函數與setbuf函數類似,好在可自定義buf的大小

setlinebuf函數

此函數等價於setvbuf(fp, (char *) NULL, _IOLBF, 0);

小點:

stdin 0 標準輸入

stdout 1 標準輸出

stderr 2 標準錯誤

_IONBF 無緩衝

_IOLBF 行緩衝

_IOFBF 全緩衝

_IO_LINE_BUF 行緩衝

_IO_UNBUFFERED 無緩衝

對IO普通文件操作整理,有錯誤請指出;

參考:http://www.cnblogs.com/whiteyun/archive/2009/08/08/1541822.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 內核編譯丶sed丶awk Linux:單內核 模塊化:動態 /lib/modules lsmod,modinfo,modprobe,insmod,,modprobe -r ,rmmod dep文件:模塊的依賴關係 sysbols:符號映射 depmod:用來生成模塊依賴關係 kernel文件夾下 a ...
  • 第一章 操作系統的定義:控制和管理電腦軟硬體資源、合理組織電腦工作流程,以方便用戶使用電腦的程式的集合。 操作系統的目標:方便性、有效性、可擴充性、開放性 操作系統的五個基本功能:存儲管理、處理機管理、設備管理、文件管理、用戶介面 操作系統的發展過程: 未配置操作系統的電腦系統:人工操作方式 ...
  • 1. 創建shell腳本 2. 給shell腳本添加執行許可權 3. 給腳本添加定時任務 crontab文件的說明: 用戶創建的crontab文件中,每一行都代表一項定時任務,每行的每個欄位代表一項設置,它的格式每行共分為六個欄位,前五段是時間設定欄位,第六段是要執行的命令欄位。 格式如下:minut ...
  • 樹狀目錄結構: 以下是對這些目錄的解釋: /bin:bin是Binary的縮寫, 這個目錄存放著最經常使用的命令。 /boot:這裡存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件。 /dev :dev是Device(設備)的縮寫, 該目錄下存放的是Linux的外部設備,在L ...
  • 基本信息記錄我在使用win10過程中遇到的一些問題我所使用的兩個win10系統Win10 企業版 1607(家裡電腦)Win10 專業版 1806(公司電腦)win10 開啟Sets請問您在開始-設置-系統-多任務中是否看到Sets的相關設置。如果沒有請您嘗試將時區和地區設置成美國後查看有沒有相關設... ...
  • 我們在前面的章節中已經詳細介紹了堆在進程中的地址空間是如何分佈的,對於程式來說,堆空間只是程式向操作系統申請划出來的一大塊地址空間。而程式在通過 malloc申請 記憶體空間時的大小卻是不一定的,從數個字到數個GB都是有可能的。於是我們必須將堆空間管理起來,將它分塊地按照用戶需求出售給最終的程式,並且 ...
  • 記憶體映射mmap是Linux內核的一個重要機制,它和虛擬記憶體管理以及文件IO都有直接的關係,這篇細說一下mmap的一些要點。 修改(2015 11 12):Linux的虛擬記憶體管理是基於mmap來實現的。vm_area_struct是在mmap的時候創建的,vm_area_strcut代表了一段連續 ...
  • 一. 菜單欄 “虛擬機” ——》 “設置 ” 使用linux.so鏡像文件 此文件在vmware workstation 的安裝目錄。並且打開CD/DVD的連接。 二.終端執行如下命令 mount /dev/cdrom /mnt/cdrom 掛載 cd /mnt/cdrom cp VMwareXXX ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...