您的位置:首页 > 运维架构 > Linux

第九节 linux标准输入输出操作

2015-07-06 11:08 330 查看
   标准输入输出的基本操作,包括文件的打开与关闭,缓冲区的操作

   非格式化输入输出,包括单个字节、字符串以及数据块的输入输出

   格式化输入输出

   

   

 1.标准输入输出的基本操作

   标准输入文件(stdin):一般为键盘

   标准输出文件(stout):一般为显示器

   标准错误输出文件(stderr):一般为显示器

   

   1.文件的打开

   操作文件之前要打开文件,打开文件主要是在系统中分配一些资源用于保存该文件的状态信息,并获取文件的指针,

   打开文件的函数为fopen

   

   2.文件的关闭

   fclose函数

   

   3.缓冲区的刷新

   刷新操作是指将缓冲区中的数据清除

   fflush函数将缓冲区中的数据写入到磁盘文件或输出到用户终端,同时清空缓冲区

   fpurge函数将缓冲区的数据直接清除,包括尚未读取或写入的数据

   

   4.缓冲区属性的设置

   缓冲区的大小和类型等都可以通过函数来设置,缓冲区的类型有下面3种。

   全缓冲:缓冲区被填满后才执行输入输出操作,将数据写入到磁盘文件或输出到用户终端。

   

   行缓冲:缓冲区中填入换行符时,执行输入输出操作

   

   无缓冲:不对数据进行缓存,标准错误输出stderr一般就是无缓冲的,这可以使错误信息尽快地显示出来。

   打开文件后,用户可以使用下面的函数来设定自己的文件缓冲区,而不使用fopen函数打开文件设定的默认缓冲区。

   定义:

    int setvbuf(FILE * stream,char * buf,int mode,size_t size);

   说明:

    在打开文件流后, 读取内容之前, 调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,

     参数buf指向自定的缓冲区起始地址, 参数size为缓冲区大小,

     参数mode有下列几种

    _IONBF 无缓冲IO

    _IOLBF 以换行为依据的无缓冲IO

    _IOFBF 完全无缓冲IO。如果参数buf为NULL指针, 则为无缓冲IO。

   除上面函数外,还有如下3个函数:

   setbuf

   setbuffer

   setlinebuf

   

   

 2.非格式化输入输出

   非格式化输入输出包括单个字节输入输出、字符串输入输出以及数据块输入输出

   

   1.单个字节输入输出

     从文件读一个字节

     fgetc

     getchar函数从标准输入读一个字节,等价于fgetc(stdin)

     向指定文件写一个字节

     fputc

     putchar函数可以向标准输出写一个字节,等价于fputc(c, stdout)

   2.字符串输入输出

     fgets函数可以从指定的文件中读一行字符到缓冲区中,

     

     fputs函数可以向指定的文件写入一个字符串

     

     feof函数来测试读写位置是否到达文件末尾

     

   3.数据块输入输出

     对文件进行输入输出操作,也可以以数据块为单位进行,所谓数据块,是指一串固定长度的字节,从文件中

     读取数据块用fread函数

     

     向文件中写入数据块使用fwrite函数

     

     

  3.格式化输入输出

     格式化输出fprintf

     printf等价于fprintf(stdout,...)

     

     格式化输入函数为fscanf

     scanf等价于fscanf(stdin,...)

     

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: