linux编程---标准高级I/O基础知识点

标准高级I/O

在这里插入图片描述

一、文件流指针和fopen函数

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

第一个参数(path):打开文件的路径和文件名

第二个参数(mode):打开文件的方式

mode功能
b二进制文件
r以制度方式打开文件,文件必须存在
w以只写覆盖方式打开文件,文件不存在则创建
a以只写追加方式打开文件,文件不存在则创建
r+以读写方式打开文件,文件必须存在
w+、a+…读写方式…

另外,stdio.h头文件把三个文件指针与三个标准文件相关联,C程序会自动打开这三个标准文件。

标准文件文件指针常用功能类型
标准输入stdin从键盘输入
标准输出stdout从显示器输出行缓存
标准错误stderr从现实器输出无缓存

这些指针都是指向FILE的指针,可以将其用作标准I/O的参数,也就是和fp是同一种性质。

返回值:文件流指针



二、读写函数

1.行缓存的读写函数(出现"\n"或写满标准库分配的缓存才会调用系统调用函数)

写函数:

puts、fputs、scanf

以fputs为例:

int fputs(const char *s, FILE *stream);

例如:

int main()
{
    fputs("hello world!", stdout);//stdout表示标准的输出
    while(1);
    return 0;
}

在此程序中,只有在hello world后面加"\n"才能输出到显示屏上,即验证了fputs是行缓存

读函数:

gets、fgets、printf、sprintf、fprintf

以fgets为例:

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

例如:

int main()
{
    char rd_buf[128] = {0};
    fgets(rd_buf, 128, stdin);//从标准输入中去读,即从键盘输入
    fputs(rd_buf, stdout);//写到标准输出中去,即显示屏显示
    return 0;
}

此程序运行后会从键盘输入后从显示器输出。

2.全缓存读写函数(只有写满标准库分配的缓存才会调用系统调用函数)

1.fwrite

2.fread



三、刷新缓存函数(fflush(FILE *stream))

功能:把库函数中的缓存强制写到内核中去。

例如:

int main()
{
    fputs("hello world!", stdout);//stdout表示标准的输出
    fflush(stdout);
    while(1);
    return 0;
}

就算hello world后面不加"\n",也会将其输出到显示器上。



四、fclose函数

功能:在改文件被关闭之前,刷新缓存中的数据,释放标准I/O库为其分配的缓存。

例如:

int main()
{
    fputs("hello world!", stdout);//stdout表示标准的输出
    fclose(stdout);
    while(1);
    return 0;
}

其作用和fflush相同,因为fclose函数里包含了fflush函数。



五、读写位置指针函数

1.fseek函数

int fseek(FILE *stream, long offset, int whence);
whence说明
SEEK_SET调整位置指针到开头
SEEK_CUR调整位置指针为当前位置
SEEK_END调整位置指针到末尾

2.rewind函数

void rewind(FILE *stream);

功能:

等价于(void)fseek(FILE *stream, 0, SEEK_SET);


六、其他函数

1.feof函数:判断是否已经到达文件结尾

2.ferror函数:判断是否读写错误

3.clearerr函数:清除流错误

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值