• 库函数系统调用文件方式,王明学learn


                  库函数系统调用文件方式

      基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性。

      对于标准的C函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

      在系统调用方式实现的文件访问中,使用文件描述符(一个整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE* 则被称之为文件指针。

    一、函数学习

    1.1打开文件fopen

      1.1.1 函数原形

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

      1.1.2 函数功能

      打开文件

      1.1.3 所属头文件

      <stdio.h>

      1.1.4 返回值

      成功:返回文件指针

         失败:NULL

      1.1.5参数说明

      path;指定打开的文件名称(包含路径)

      mode:文件打开模式

    1.2关闭文件fclose

      1.2.1函数原形

      int fclose(FILE* fp);

      1.2.2 函数功能

      关闭文件

      1.2.3所属头文件

      <stdio.h>

      1.2.4返回值

      成功:0

        失败 EOF

      1.2.5参数说明

      fp:待关闭文件指针

    1.3读文件fread

      1.3.1函数原形

      size_t fread(void* ptr,size_t size,size_t n,FILE* stream);

      1.3.2函数功能

      fread()实现从 stream 中读取 n 个字段,每个字段为 size 个字节,并将读取的字段放入 ptr 所指的字符数组中, 返回实际已读取的字段数。在读取的字段数小于 num 时,可能是在函数调用时出现错误,也可能是读到文件的结尾。

      1.3.3所属头文件

      <stdio.h>

      1.3.4返回值

      成功:返回成功读取的数据量  失败:0

      1.3.5参数说明

      stream:指向要读取的文件

      ptr:指向读取到的 数据 要保存的位置

      size:每块的数据大小

      nmemb:读取的数据块数

    1.4 写文件fwrite

      1.4.1函数原形

      size_t fwrite(const void* ptr,size_t size,size_t n,FILE* stream);

      1.4.2函数功能

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

      1.4.3所属头文件

      <stdio.h>

      1.4.4返回值

      成功:成功写入数据量

        失败:0

      1.4.5参数说明

      ptr:存放要写入的数据

      size:每块的数据大小

      nmemb:数据的块数

      stream:要写入数据的文件指针

    1.5定位文件fseek

      1.5.1函数原形

      int fseek(FILE* stream,long offset,int whence);

      1.5.2函数功能

      设置文件位置指针

      1.5.3所属头文件

      <stdio.h>

      1.5.4返回值

      成功:返回0

         失败:-1

      1.5.5参数说明

      stream:移动的文件

      offset:要移动的偏移量

      whence:确定要移动的初始位置

     实例:

    #include <stdio.h> 
    2    #define LENGTH 100 
    3    main() 
    4    { 
    5          FILE *fd; 
    6          char str[LENGTH]; 
    7 
    8          fd = fopen("hello.txt", "w+"); /*  创建并打开文件  */ 
    9          if (fd) 
    10        { 
    11              fputs("Hello World", fd); /*  写入字符串  */ 
    12              fclose(fd); 
    13        } 
    14
    15         fd = fopen("hello.txt", "r"); 
    16        fgets(str, LENGTH, fd); /*  读取文件内容  */ 
    17        printf("%s
    ", str); 
    18        fclose(fd); 
    19  }              
  • 相关阅读:
    [USACO13NOV] Pogo-Cow
    《高性能Mysql》讲聚簇索引
    复合索引底层实现
    数据库索引实现(B+,B-,hash)
    B+树,B树,聚集索引,非聚集索引
    MySQL存储引擎
    synchronized实现原理
    【1】线程池的使用
    CompletionService
    原型模式
  • 原文地址:https://www.cnblogs.com/wmx-learn/p/5301906.html
Copyright © 2020-2023  润新知