C語言的文件操作


一、C文件的有關基本知識

  • 程序設計中主要用到兩種文件
    • 程序文件:其內容是程序代碼
    • 數據文件
      • 文本文件(ASCII文件)
      • 二進制文件
  • stdio.h頭文件中有關於文件類型FILE的聲明,使用時一般都是設置一個指向FILE類型變量的指針變量

二、打開與關閉文件

2.1 用fopen函數打開數據文件

  • fopen函數的調用方式為,fopen(文件名,使用文件方式);,例如:fopen("data.txt", "r");
  • 打開成功,fopen返回一個指向文件的指針,否則返回NULL
  • 常用的使用文本文件方式如下
    • "r":只能從文件中讀數據,該文件必須先存在,否則打開失敗
    • "w":只能向文件寫數據,若指定的文件不存在則創建它,如果存在則先刪除它再重建一個新文件
    • "a":向文件增加新數據(不刪除原有數據),若文件不存在則打開失敗,打開時位置指針移到文件末尾
    • "r+":可讀/寫數據,該文件必須先存在,否則打開失敗
    • "w+":可讀/寫數據,用該模式打開新建一個文件,先向該文件寫數據,然后可讀取該文件中的數據
    • "a+":可讀/寫數據,原來的文件不被刪去,位置指針移到文件末尾
  • 打開二進制文件的模式與打開文本文件的含義是一樣的,不同的是模式名稱里面多一個字母'b’,“rb”“wb”“ab”“rb+”“wb+”“ab+”

2.2 用fclose函數關閉數據文件

  • 在使用完一個文件后應該關閉它,以防止它再被誤用,如果不關閉文件將會丟失數據
  • fclose函數調用的一般形式為,fclose(文件指針);
  • 關閉成功,返回值為0,否則返回EOF(-1)

三、順序讀寫數據文件

3.1 向文件讀寫字符

  • fgetc(fp),從fp指向的文件讀入一個字符,讀成功,返回所讀字符;失敗則返回EOF
  • fputc(ch, fp),把字符ch寫到fp指向的文件中,輸出成功,返回值為輸出的字符;失敗則返回EOF
  • 使用feof(fp)可以檢查文件讀寫位置標記是否移到文件末尾,即文件是否結束,如果是,則函數返回值為1,否則為0

3.2 向文件讀寫字符串

  • fgets(str, n, fp),從fp指向的文件讀入一個長度為n-1的字符串,存放到字符數組str中,讀成功,返回地址str;失敗則返回NULL
  • fputs(str, fp), 把str所指向的字符串寫到fp指向的文件中,輸出成功返回0,否則返回非0值

3.3 用格式化的方式讀寫文件

  • 用fprintf函數和fscanf函數對文件進行格式化輸入輸出
  • 它們的作用和printf、scanf函數相仿,都是格式化讀寫函數,只有一點不同:fprintf和fscanf函數的讀寫對象不是終端而是文件
  • 例如 
    • fprintf(fp, "%d, %s, %c", num, name, gender);
    • fscanf(fp, "%d, %s, %c", &num, name, &gender);

3.4 用二進制方式向文件讀寫一組數據

  • 當要求一次存取一組數據(如,一個數組、一個結構體變量的值),fread和fwrite函數可以解決該類問題
  • 它們的調用形式一般為:
    • fread(buffer, size, count, fp);
    • fwrite(buffer, size, count, fp);
      • buffer:對於fread來說,指的是讀入數據的存放地址;對於fwrite來說,是要輸出數據的地址
      • size:讀寫數據時,每組數據的大小
      • count:讀寫多少組數據
      • fp:文件指針


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM