库函数系统调用文件方式,王明学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\n", str); 
18        fclose(fd); 
19  }              

 

posted @ 2016-03-21 14:46  for_learning  阅读(281)  评论(0编辑  收藏  举报