日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言-文件操作总结

發布時間:2025/6/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言-文件操作总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 fopen文件操作方式
    • 1.1 打開文件fopen
    • 1.2 關閉文件fclose
  • 2 向文件讀寫字符
    • 2.1 讀字符fgetc
    • 2.2 寫字符fputc
  • 3 向文件讀寫字符串
    • 3.1 讀字符串fgets
    • 3.2 寫字符串fputs
  • 4 格式化方式讀寫文件
    • 4.1 格式化寫fprintf
    • 4.2 格式化讀fscanf
  • 5 二進制向文件讀寫一組數據
    • 5.1 二進制讀fread
    • 5.2 二進制寫fwrite
  • 6 隨機讀寫數據文件
    • 6.1 指向文件開頭rewind
    • 6.2 改變位置fseek
    • 6.3 測定當前位置ftell
  • 7 文件讀寫出錯檢測
    • 7.1 函數ferror
    • 7.2 函數clearerr

1 fopen文件操作方式

操作方式含義如果指定文件不存在
“r”只讀為了輸入數據,打開一個已存在的文本文件出錯
“w”只寫為了輸出數據,打開一個文本文件(清空)建立新文件
“a”追加向文本文件末尾添加數據出錯
“rb”只讀為了輸入數據,打開一個已存在的二進制文件出錯
“wb”只讀為了輸出數據,打開一個二進制文件(清空)建立新文件
“ab”追加向二進制文件末尾添加數據出錯
“r+”讀寫為了讀和寫,打開一個文本文件出錯
“w+”讀寫為了讀和寫,打開一個文本文件(清空)建立新文件
“a+”讀寫為了讀和寫,打開一個文本文件出錯
“rb+”讀寫為了讀和寫,打開一個二進制文件出錯
“wb+”讀寫為了讀和寫,打開一個二進制文件(清空)建立新文件
“ab+”讀寫為了讀和寫,打開一個二進制文件出錯
  • 用“r”方式打開文件只能用于向計算機輸入而不能用作向該文件輸出數據(即讀數據到變量中),若文件不存在會出錯
  • 用“w”方式打開文件只能用于向該文件寫數據(即往文件里寫數據),而不能用來向計算機輸入,如果原文件不存在,則創建該文件,若該文件已存在,則打開文件前將其刪除,再重新創建一個
  • 若要向文件末尾添加數據(不希望刪除原有數據),則使用“a”方式,文件不存在會出錯
  • 帶“+”的方式,既可用來輸入數據,也可用來輸出數據
  • 若以任意方式打開文件失敗,fopen函數會返回NULL
  • 在以文本文件(ASCII)讀入字符時,遇到回車換行符(\r\n),系統把它轉換為一個換行符(\n),在輸出時把換行符(\n)轉換為回車(\r)和換行(\n)兩個字符
  • 在以二進制方式時,不進行上述轉換,在內存中的數據形式與輸出到外部文件中的數據形式完全一致,一一對應

1.1 打開文件fopen

FILE *fp = fopen("abc.txt", "r");

1.2 關閉文件fclose

fclose(fp); // 關閉成功返回0,否則返回EOF(-1)

2 向文件讀寫字符

2.1 讀字符fgetc

函數原型int fgetc(FILE *stream)

  • 調用形式ch = fgetc(fp)
  • 從fp指向的文件讀入一個字符,該函數以無符號char 強制轉換為int的形式返回讀取的字符,讀成功,帶回所讀的字符,失敗則返回文件結束標志EOF(-1)

2.2 寫字符fputc

函數原型int fputc(int char, FILE *stream)

  • 調用形式fputc(ch,fp)
  • 把字符ch寫到文件指針變量fp所指的文件中,輸出成功返回值就是輸出的字符,輸出失敗則返回EOF(-1)

3 向文件讀寫字符串

3.1 讀字符串fgets

函數原型char *fgets(char *str, int n, FILE *stream)

  • 調用形式fgets(str, n, fp)
  • n為要求得到字符個數(但實際上只有n-1),從fp所指的文件讀入一個長度為n-1的字符串,并在最后加一個\0
  • 然后把這n個字符存放在字符數組str中,若在讀完n-1個字符之前遇到換行符(\n)或文件結束符EOF,讀入結束
  • 若執行函數成功,則返回str數組首元素的地址,若一開始就遇到文件末尾或讀數據出錯,則返回NULL

3.2 寫字符串fputs

函數原型int fputs(const char *str, FILE *stream)

  • 調用形式fputs(str, fp),把str所指向的字符串寫到文件指針變量fp指向的文件中,字符串末尾的\0不輸出
  • 輸出成功返回0,失敗返回EOF

4 格式化方式讀寫文件

fprintf和fscanf,在輸入時要將文件的ASCII碼轉換為二進制形式在保存,再輸出時又要將二進制形式轉換為字符,要花費較多時間

4.1 格式化寫fprintf

函數原型int fprintf(FILE *stream, const char *format, ...)

  • 如果成功,則返回寫入的字符總數,否則返回一個負數

4.2 格式化讀fscanf

函數原型int fscanf(FILE *stream, const char *format, ...)

  • 如果成功,返回成功匹配和賦值的個數。如果到達文件末尾或發生讀錯誤,則返回EOF

5 二進制向文件讀寫一組數據

5.1 二進制讀fread

函數原型size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream),

  • ptr為從文件讀入的數據保存的地址
  • size為要讀的字節數
  • nmemb為元素的個數,每個元素的大小為 size 字節
  • stream輸出流的FILE指針
  • 返回成功讀取的個數

5.2 二進制寫fwrite

函數原型size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

  • ptr為要向文件寫入的數據首地址
  • size為要寫的字節數
  • nmemb為元素的個數,每個元素的大小為 size 字節
  • stream輸入流的FILE指針
  • 返回成功寫入的個數

6 隨機讀寫數據文件

6.1 指向文件開頭rewind

函數原型void rewind(FILE *stream)

  • rewind的作用是使文件位置標記重新返回文件的開頭
  • 此函數沒有返回值
  • 調用形式rewind(fp);,將fp指向文件開頭

6.2 改變位置fseek

函數原型int fseek(FILE *stream, long int offset, int whence)

  • stream為所操作的文件指針
  • offset這是相對 whence 的偏移量,以字節為單位,注意它是long int類型
  • whence這是表示開始添加偏移offset的位置。它一般指定為下列常量之一:
常量描述數字表示
SEEK_SET文件的開頭0
SEEK_CUR文件指針的當前位置1
SEEK_END文件的末尾2
  • 向后移動,調用形式fseek(fp,100L,SEEK_SET);,表示從文件的開頭,向后偏移到100個字節
  • 向前移動,調用形式fseek(fp,-200L,SEEK_END);,表示從文件的末尾,向前偏移到200個字節
  • 如果成功,則該函數返回零,否則返回非零值

6.3 測定當前位置ftell

函數原型long int ftell(FILE *stream)

  • stream文件指針
  • ftell函數的作用是得到流式文件中文件位置標記的當前位置
  • 該函數返回位置標識符的當前值。如果發生錯誤,則返回 -1L,全局變量errno被設置為一個正值

7 文件讀寫出錯檢測

7.1 函數ferror

  • 在調用一個輸入輸出函數后,可以使用ferror(fp)檢測是否出現錯誤
  • 返回0代表未出錯,返回非零表示出錯
  • 對同一個文件每調用一次輸入輸出函數,都會產生新的值,應該在每次輸入輸出函數調用后,立即檢測

7.2 函數clearerr

  • 若調用一個輸入輸出函數出錯后,ferror為非零值
  • 調用clearerr(fp);可以將錯誤標記的值置位0,以便一下次檢測

總結

以上是生活随笔為你收集整理的C语言-文件操作总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。