zoukankan      html  css  js  c++  java
  • 用于文件系统的C库函数

     9/20/2017 学<LINUX C编程实战》中


    1.打开

    File *fopen(const char *path , const char * mode);

      fopen实现打开指定的文件FileName,mode指打开的形式,C语言中打开的形式种类如下:

      

      

      b用于打开二进制文件而非文本文件,这是DOS、Windows下的情况。在Linux中不区分二进制文件和文本文件。

      同时注意,标志都是const char * 类型,即都是字符串字面值,需要用到双引号,写成fopen(”1.txt" , r); 是错误的。

      由于fopen();的返回值是FILE *类型,所以利用一个相同类型的对象如fp去标识fopen();,即fp标识目标文件。之后对fp的操作即是对目标文件的操作。  

    2.读写

      支持字符串、字符等单位进行读写文件。

    int fgetc(FILE *stream);
    int fputc(int c, FILE *stream);
    char *fgets(char *s, int n, FILE *stream);
    int fputs(const char *s, FILE *stream);
    int fprintf(FILE *stream, const char *format, ...);
    int fscanf (FILE *stream, const char *format, ...);
    size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
    size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);

      fread();:实现从流stream中读出n个字段,每个字段长size个字节,并将n个字段放入名为ptr的字符数组中,返回实际读取的字段数。

      fwrite();:实现从缓冲区ptr所指的数组中把n个字段写入流stream,每个字段长size个字节,返回实际写入的字段数。

      fputs();:实现了把字符串写入流stream中。参数s是一个数组,包含了以''为结尾的字符序列。参数stream是指向FILE对象的指针,该对象标识了要被写入的流。返回值:成功的话返回一个非负值,失败的话返回一个EOF。

      注意如果要实现output功能,需要用一个字符串数组存储内容并输出,fputs();是向文件中”ouput“,即写入文件,并非输出文件。

    3.定位

    int fgetpos(FILE *stream, fpos_t *pos);
    int fsetpos(FILE *stream, const fpos_t *pos);
    int fseek(FILE *stream, long offset, int whence);

      返回值:成功返回0,否则返回非0。

      用法如下:

    #include <stdio.h>
    
    int main ()
    {
       FILE *fp;
       fpos_t position;
    
       fp = fopen("file.txt","w+");
       fgetpos(fp, &position);
       fputs("Hello, World!", fp);
      
       fsetpos(fp, &position);
       fputs("这将覆盖之前的内容", fp);
       fclose(fp);
       
       return(0);
    }

      创建一个文件file.txt,并以读写的方式打开,首先使用fgetpos();获取文件的初始位置,写入“Hello, World!",然后使用fsetpos();重置为文件头的位置。再写入”这将覆盖之前的内容“,实现内容的覆盖。最终输出”浙江覆盖之前的内容“。

      

    4.关闭

    int fclose(FILE *stream);

      关闭流stream,刷新缓冲区。参数stream是FILE对象的指针,该对象指定了要被关闭的流。

      返回值:成功关闭返回0,失败返回EOF。

    例程:

      编写一个程序,在当前目录下创建用户可读写文件“hello.txt”,在其中写入“Hello, software weekly”,关闭该文件。再次打开该文件,读取其中的内容并输出在屏幕上。

      

     1 #include <stdio.h>
     2 #define LENGTH 100
     3 
     4 int main()
     5 {
     6     FILE *fp;
     7     char str[LENGTH];
     8     fp = fopen("hello2.txt" , "w+");
     9     if(fp)
    10     {
    11         fputs("Hello,software weekly" , fp);
    12         fclose(fp);
    13     }    
    14     fp = fopen("hello2.txt" , "r");  
    15     fgets(str , LENGTH , fp);
    16     printf("%s
    " , str); 
    17     return 0;
    18 }

      output:bw98@ubuntu:~/Practice/project3$ ./2
         Hello,software weekly

    ————全心全意投入,拒绝画地为牢
  • 相关阅读:
    2019-9-2-win10-uwp-Markdown
    2018-8-10-控件
    2018-8-10-win10-uwp-dataGrid
    2018-2-13-win10-uwp-hashcash
    2018-2-13-git-cannot-lock-ref
    UCOSIII系统内部任务
    UCOSIII时间片轮转调度
    Keil MDK fromelf生成bin文件
    UCOS内存管理
    uavcan扩展帧格式 zubax
  • 原文地址:https://www.cnblogs.com/Bw98blogs/p/7555093.html
Copyright © 2011-2022 走看看