流和标准流(从进门到进厂)

本期介绍

主要介绍:程序中“流”的概念,“流”的作用,C语言中的默认打开的标准流:stdin stdout stderr。

———————————————————————————————————————————

流和标准流


        上一章我们讲解了文件操作,就是将内存中的数据输出到文件(硬盘),或从文件(硬盘)中获取数据放到内存中。其中硬盘就是一个外部设备,同理我们也可以将数据发送到其他外部设备,例如:屏幕,U盘,网络......

每一种外部设备的读取数据都是有差距的,所以作为程序员,需要掌握多种外部设备显然难度太大,因此我们引入了流。
     程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便的操作,我们抽象出了的概念,我们可以把流想象成流淌着字符的河

这样程序员在输入输出数据时不需要关心外部设备了,只需要将数据与流相连,C语言底层已经将流向不同外部设备的输入和输出实现好了,不需要我们关心。

我们只需要从流里读取数据,向流里写数据

根据方向分为两种:数据向外流成为输出流,数据向内存流的称为输入流


    C程序针对文件、画面、键盘等的数据输入输出操作都是通过操作的。
一般情况下,我们要想向流里写数据,或者从流中读取数据,都是要打开流,然后操作。


标准流


那为什么我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?

  那是因为C语言程序在启动时已经将标准流(standard stream)准备好了。

默认打开了3个流:
                 stdin-标准输入流,在大多数的环境中从键盘输入,

                                                           scanf函数就是从stdin-标准输入流(键盘)中读取数据。
                stdout-标准输出流,大多数的环境中输出至显示器界面,

                                                           printf函数就是将信息输出到stdout-标准输出流(屏幕)中。
                stderr-标准错误流,大多数环境中输出到显示器界面。


这是默认打开了这三个流,我们使用scanf、printf等函数就可以直接进行输入输出操作的。


stdin、 stdout、 stderr 三个流的类型是: FILE*,通常称为文件指针。
C语言中,就是通过 FILE*的文件指针来维护流的各种操作的。

例如:字符输出函数fputc的第二个参数FILE* stream就是流。如果stream是文件指针,则该字符就输出到文件中,如果stream是stdout,则输出到屏幕上。

#include<stdio.h>

int main()
{
	FILE * pf = fopen("data.txt","w");
	fputc('h', pf);//输出到文件中
	fputc('h',stdout);//输出到屏幕
	fputc('e', stdout);//输出到屏幕
	fputc('l', stdout);//输出到屏幕
	fputc('l', stdout);//输出到屏幕
	fputc('o', stdout);//输出到屏幕
	fclose(pf);
	pf = NULL;
	return 0; 
}

运行结果:

文件中

屏幕上

其他文件操作可以看我的上一篇博客,

欢迎订阅“从进门到进厂”专栏,会持续更新C语言C++及数据库的干货

                                                

这个博客如果对你有帮助,给博主一个免费的点赞就是最大的帮助

欢迎各位点赞,收藏和关注哦

如果有疑问或有不同见解,欢迎在评论区留言

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一码归—码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值