精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C程序員如何創建、打開、關閉文本文件或二進制文件

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-11-08 14:38 ? 次閱讀

我們講解了 C 語言處理的標準輸入和輸出設備。本次我們將介紹 C 程序員如何創建、打開、關閉文本文件或二進制文件。

一個文件,無論它是文本文件還是二進制文件,都是代表了一系列的字節。C 語言不僅提供了訪問頂層的函數,也提供了底層(OS)調用來處理存儲設備上的文件。本章將講解文件管理的重要調用。

打開文件

您可以使用fopen( )函數來創建一個新的文件或者打開一個已有的文件,這個調用會初始化類型FILE的一個對象,類型FILE包含了所有用來控制流的必要的信息。下面是這個函數調用的原型:

FILE *fopen(constchar* filename,constchar* mode );

在這里,filename是字符串,用來命名文件,訪問模式mode的值可以是下列值中的一個:

如果處理的是二進制文件,則需使用下面的訪問模式來取代上面的訪問模式:

"rb","wb","ab","rb+","r+b","wb+","w+b","ab+","a+b"

關閉文件

為了關閉文件,請使用 fclose( ) 函數。函數的原型如下:

int fclose( FILE *fp );

如果成功關閉文件,fclose( )函數返回零,如果關閉文件時發生錯誤,函數返回EOF。這個函數實際上,會清空緩沖區中的數據,關閉文件,并釋放用于該文件的所有內存。EOF 是一個定義在頭文件stdio.h中的常量。

C 標準庫提供了各種函數來按字符或者以固定長度字符串的形式讀寫文件。

寫入文件

下面是把字符寫入到流中的最簡單的函數:

int fputc(int c, FILE *fp );

函數fputc()把參數 c 的字符值寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回寫入的字符,如果發生錯誤,則會返回EOF。您可以使用下面的函數來把一個以 null 結尾的字符串寫入到流中:

int fputs(constchar*s, FILE *fp );

函數fputs()把字符串s寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回一個非負值,如果發生錯誤,則會返回EOF。您也可以使用int fprintf(FILE *fp,const char *format, ...)函數來寫把一個字符串寫入到文件中。嘗試下面的實例:

注意:請確保您有可用的tmp目錄,如果不存在該目錄,則需要在您的計算機上先創建該目錄。

/tmp一般是 Linux 系統上的臨時目錄,如果你在 Windows 系統上運行,則需要修改為本地環境中已存在的目錄,例如:C:\tmp、D:\tmp等。

當上面的代碼被編譯和執行時,它會在 /tmp 目錄中創建一個新的文件test.txt,并使用兩個不同的函數寫入兩行。接下來讓我們來讀取這個文件。

讀取文件

下面是從文件讀取單個字符的最簡單的函數:

int fgetc( FILE * fp );

fgetc()函數從 fp 所指向的輸入文件中讀取一個字符。返回值是讀取的字符,如果發生錯誤則返回EOF。下面的函數允許您從流中讀取一個字符串:

char*fgets(char*buf,int n, FILE *fp );

函數fgets()從 fp 所指向的輸入流中讀取 n - 1 個字符。它會把讀取的字符串復制到緩沖區buf,并在最后追加一個null字符來終止字符串。

如果這個函數在讀取最后一個字符之前就遇到一個換行符 '\n' 或文件的末尾 EOF,則只會返回讀取到的字符,包括換行符。您也可以使用int fscanf(FILE *fp, const char *format, ...)函數來從文件中讀取字符串,但是在遇到第一個空格字符時,它會停止讀取。

當上面的代碼被編譯和執行時,它會讀取上一部分創建的文件,產生下列結果:

1:This2:is testing for fprintf...3:Thisis testing for fputs...

首先,fscanf()方法只讀取了This,因為它在后邊遇到了一個空格。其次,調用fgets()讀取剩余的部分,直到行尾。最后,調用fgets()完整地讀取第二行。

二進制 I/O 函數

下面兩個函數用于二進制輸入和輸出:

size_tfread(void *ptr, size_tsize_of_elements, size_tnumber_of_elements, FILE *a_file); size_tfwrite(constvoid *ptr, size_tsize_of_elements, size_tnumber_of_elements, FILE *a_file);

這兩個函數都是用于存儲塊的讀寫 - 通常是數組或結構體。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    794

    瀏覽量

    41600
  • C語言
    +關注

    關注

    180

    文章

    7599

    瀏覽量

    136213
  • 函數
    +關注

    關注

    3

    文章

    4307

    瀏覽量

    62433

原文標題:C語言中的文件讀寫

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在Go中操作文本文件

    作為一種編程語言,Go 具有廣泛的內置功能,包括創建、讀取和寫入文本(.txt)文件文件的功能。 文件是現代世界我們日常生活的重要組成部分
    發表于 09-29 09:48 ?737次閱讀

    使用文本文件(.txt)進行數據存取的技巧總結

    二進制還是文本文件取決于fopen的方式,如果用wt,則存儲為文本文件,這樣用記事本打開就可以正常顯示了;如果用w則存儲為二進制
    發表于 02-21 10:56

    如何在Nios II中燒寫二進制文件到flash中

    中我們可以將flash中的數據讀出來,那怎樣才能燒寫有用的數據呢。下面就八一八。首先要理清楚二進制文件文本文件的區別。   大家都知道計算機的存儲在物理上是二進制的,所以
    發表于 03-08 15:33

    labview 當打開文本文件時點擊文件確定時為什么會關閉VI

    labview 當打開文本文件時點擊文件確定時為什么會關閉VI
    發表于 09-16 16:53

    求助~二進制文件的讀取問題

    `各位大神,我有個后綴為bin的二進制文本文件,數據類型是16位帶符號的,我想把數據文件用labview波形文件打開,共16通道,
    發表于 10-17 23:44

    串口發送代碼,請問是通過串口調試工具直接發送.bin文件嗎?還是發送文本文件啊?

    工具直接發送.bin文件嗎?還是把二進制文件打開,把里面的內容拷貝到文本文件.txt里,然后發送文本文件
    發表于 06-11 07:21

    【LabVIEW懶人系列教程-小白入門】1.25LabVIEW文件IO之二進制dat文件讀寫

    碼:c133今日總結① txt文本文件的讀寫方式②電子表格文件的讀寫方式今日作業編輯創建文件路徑文件
    發表于 08-10 15:22

    C語言入門教程-文本文件

    文本文件 C中的文本文件很簡單,不難掌握。所有的文本文件操作函數和相關類型都由stdio庫提供。 當您的C
    發表于 07-29 11:23 ?1292次閱讀

    C語言入門教程-打開文本文件

    打開文本文件 使用fopen可以打開一個文件。fopen以某種指定模式(最常用的三種模式為r、w和a,分別代表讀、寫和附加)打開
    發表于 07-29 11:26 ?1887次閱讀

    C語言入門教程-二進制文件

    二進制文件 二進制文件非常類似于結構體數組,只不過這些結構體被保存在一個磁盤文件而非內存數組中。因為是使用磁盤保存
    發表于 07-29 14:24 ?1928次閱讀

    二進制加法程序C語言版】

    二進制加法程序C語言版】二進制加法程序C語言版】二進制
    發表于 12-29 11:03 ?0次下載

    C語言程序內存布局該關注哪些內容

    C語言代碼(文本文件)形成可執行程序二進制文件),需要經過編譯-匯編-連接三個階段。編譯過程把C
    發表于 05-07 08:03 ?922次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>程序</b>內存布局該關注哪些內容

    在Linux上分析二進制文件的10種方法

    這將是你進行二進制分析的起點。我們每天都在與文件打交道,并非所有的文件都是可執行類型,除此之外還有各種各樣的文件類型。在你開始之前,你需要了解要分析的
    的頭像 發表于 06-18 17:32 ?3127次閱讀

    Python-文件操作

    在計算機中,文件是以 **二進制** 的方式保存在磁盤上的* **文本文件 **和** 二進制文件**
    的頭像 發表于 02-16 15:42 ?698次閱讀
    Python-<b class='flag-5'>文件</b>操作

    python創建文件對象

    (經常會用!!!) 文本文件對象和二進制文件對象的創建 如果是二進制模式 b ,則創建的是
    的頭像 發表于 06-21 17:19 ?1518次閱讀
    python<b class='flag-5'>創建文件</b>對象