c語言文件I/O 文件讀取和寫入


C語言文件相關函數主要有以下幾種:

  1. FILE* fopen(char* filepath, char* mode);
    打開文件函數,傳入文件地址和打開模式
    文件打開模式包括
                     "r"  讀取
                    ,"w" 寫入模式,將現有文件清空。如果不存在則創建文件
                    ,"a" 附加模式,在文件末尾追加數據,不存在則創建文件
                    ,"r+"更新模式,可讀可寫
                    ,"w+"更新模式,可讀可寫,文件清空,不存在則創建文件
                    ,"a+"更新模式,可讀可寫,末尾追加,不存在則創建文件,可以讀取全部數據,但只能在末尾追加
    返回文件指針
     
  2. char  getc(FILE* fp);
    從fp所指文件中讀取一個字符,並返回。
    與char getchar()的區別就是,此函數需要指定字符獲取源,而getchar()默認從stdin獲取輸入。
    也就是說 char getchar() 等價於 char getc(stdin) 。
     
  3. putc(char ch, FILE* fp);
    將字符ch放入fp所指文件。
    與putchar(char ch)的區別就是,此函數需要指定字符目的文件,而putchar()默認將字符放入stdout。
    也就是說 putchar(char ch) 等價於 putc(ch,stdout);
     
  4. int fclose(FILE* fp);
    關閉fp指定的文件,必要時刷新緩沖區。
    成功返回0,失敗返回EOF。當硬盤存儲滿的時候失敗。
  5. 標准文件指針
    stdin,   指向鍵盤
    stdout, 指向屏幕
    stderr,  指向屏幕
     
  6. fscanf(FILE* fp, const char* format, char* buf);
    從fp所指文件中按照format格式將數據讀取到buf中。
    與scanf(const char* format, char* buf);區別就是,fscanf(FILE* fp, const char* format, char* buf)可以指
    定從哪里讀取數據。而scanf(const char* format, char* buf);默認從stdin讀取數據。
    也就是說scanf(const char* format, char* buf);等價與 fscanf(stdin, const char* format, char* buf);
     
  7. fprintf(FILE* fp, char* buf);
    將buf中的數據寫入fp所指文件。
    與printf(char* buf);區別就是,fprintf(FILE* fp, char* buf);可以指定將buf寫入哪里,而printf(char* buf);
    默認寫入stdout。
    也就是說fprintf(stdout, char* buf); 等價於 printf(char* buf);
     
  8. fgets(char* buf, int stlen, FILE* fp);
    從fp所指文件讀取一行或者讀取到文件結尾或者讀取strlen-1個字符放入buf中。
    當讀取到EOF時返回NULL。
     
  9. fputs(char* buf, FILE* fp);
    將buf寫入fp所指文件。因為fgets(char* buf, int stlen, FILE* fp);在讀取行的時候返回'\n',因此,此函數不會
    添加回車。
     
  10. fseek(FILE* fp, long offset, seek_mod);
    將fp所指文件指針調整到seek_mod規定的位置,並按照offset調整指針。
    seek_mod:
            SEEK_SET,文件開始
            SEEK_CUR,當前指針
            SEEK_END 文件結束
    offset:可正可負
     
  11. ftell(FILE* fp);
    返回fp所指文件指針當前位置

 源碼示例:https://github.com/WeiAt931/C.git


免責聲明!

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



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