关闭

第九节 标准输入输出

106人阅读 评论(0) 收藏 举报
分类:


   标准输入输出的基本操作,包括文件的打开与关闭,缓冲区的操作
   非格式化输入输出,包括单个字节、字符串以及数据块的输入输出
   格式化输入输出
   
   
 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,...)
     
     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75531次
    • 积分:1689
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:175篇
    • 译文:0篇
    • 评论:1条
    最新评论