IO进程知识点

1.IO的种类

IO分为标准IO和文件IO,标准IO由库函数调用,文件IO由系统调用。

2.标准IO

2.1什么是FILE

FILE本身是一个结构体,在调用fopen的时候产生一个结构体指针,在读写文件的时候通过FILE指针完成。

#include <stdio.h>

typedef struct _IO_DILE FILE;

struct _IO_FILE

{

        char *_IO_buf_base; //缓冲区的起始地址

        char* _IO buf_end;//缓冲区的结束地址

        ...

}

在一个正在执行的程序中,默认已经有了三个FILE指针,stdin(标准输入)  stdout(标准输出)  stderr(标准出错)。

2.2  fopen函数

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

@pathname:想要打开的文件路径及名字

@mode:想打开的方式

r:以只读方式打开文件,将光标定位到文件的开头

r+:以读写方式打开文件,将光标定位到文件的开头

w:以只写方式打开文件,如果文件存在就清空,如果文件不存在就创建

w+:以读写方式打开文件,如果文件存在就清空,如果文件不存在就创建

a:以追加的方式打开文件,如果文件不存在就创建文件,如果文件存在将光标定位的结尾写

a+:以读和追加的方式打开文件,如果文件不存在就创建文件,如果读从开头读,如果写从结尾写

返回值:成功返回FILE指针,失败返回NULL,置位错误码。

2.3  fclose函数

#include <stdio.h>

int fclose(FILE *stream);

功能:关闭文件

参数 :@stream文件指针

返回值:成功返回0,失败返回EOF(-1),置位错误码

2.4  strerror函数

#include <string.h>

功能:将错误码转换为错误信息的字符串

参数:@errnum:错误码

返回值:错误信息的字符串

2.5  perror函数

#include <stdio.h>

void perror(const char *s);

功能:将错误信息打印到终端上

参数:@s:用户的附加信息

返回值:无

2.6  fputc/fgetc函数

#include <stdio.h>

int fputc(int c,FILE *stream);

功能:@c:字符中的ascii  @stream:文件指针

返回值:成功返回字符的ascii值,失败返回EOF(-1)

int fgetc(FILE *stream)

功能:从文件中读取字符

参数:@stream:文件指针

返回值:成功读取到的字符的ascii,读取到文件结尾或者出错,返回EOF(-1)

2.7  fgets/fputs函数

char *fgets(char *s,int size,FILE *stream);

功能:从stream对应的文件中最多读取size-1个字符到s中,当遇到EOF或者换行符的时候停止,如果是换行符停止的,它会将换行符存储到s中。s的结束:在s存储的最后一个字符之后通过添加'\0'的形式表示结束

例:s=0123456789'\n''\0'  size=100  文件第一行10个字符

       s=01234'\0'                 size=6      文件第一行5个字符

参数:@s:用于存储读取到的字符串的首地址   @size:读取字符串中字符的个数   @stream:文件指针。

返回值:成功返回大于0的值,失败返回EOF

2.8缓冲区的刷新时机

2.8.1行缓冲的刷新时机

1.行缓存遇到换行符的时候会刷新缓冲区

2.当程序结束的时候会刷新缓冲区

3.当输入输出发生切换的时候

4.当关闭文件的时候会刷新缓冲区

5.缓冲去满也会刷新缓冲区

6.主动刷新缓冲区

2.8.2全缓存的刷新时机

1.当程序结束的时候会刷新缓冲区

2.当输入输出发生切换的时候

3.当关闭文件的时候会刷新缓冲区

4.缓冲去满也会刷新缓冲区

5.主动刷新缓冲区

续写下篇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值