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);在读取行的时候返回' ',因此,此函数不会
    添加回车。
     
  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

原文地址:https://www.cnblogs.com/PPWEI/p/9903791.html