C语言stdout,stdin流介绍 |
您所在的位置:网站首页 › c语言输入数据的方式 › C语言stdout,stdin流介绍 |
stdout,stdin, stderr是一个C程序中默认开启的三个数据流(文章只介绍stdout, stdin.) stdout -- 标准输出流 -- 屏幕 stdin -- 标准输入流 -- 键盘 stderr -- 标准错误流 -- 屏幕 我们写程序时,有时想把数据输出到屏幕上,有时想把数据输出到硬盘上,有时候想把数据输出到软盘上,有时想把数据输出到光盘上... 所以我们在写程序的时候会经常操控各种各样的硬件,硬件的不同,读写方式也不同,所以我们难道要懂得各种各样硬件的读写方式吗 所以在程序和硬件中间高度抽象了一个流的概念,我们只需要把数据丢给流,它帮我们来完成对应硬件的读写方式,我们就便利了许多。 一、stdout介绍 我们先看看printf()函数函数 printf int printf(const char* format, ...); 将格式化数据打印到标准输出 将格式指向的C字符串写入标准输出(stdout)。如果格式包含格式说明符(以“%”开头的子序列),则格式后面的附加参数将被格式化并插入到结果字符串中,以替换其各自的说明符。 这里提到了将指向的C字符串写入标准输出, 我们写printf("hello world!");就自动输出到屏幕上,就是因为printf()函数默认把(格式化)字符串输出到stdout流,也就是屏幕上。 与fprintf()函数比较函数 fprintf int fprintf(FILE* stream, const char* format, ...); 将格式化的数据写入流 将格式指向的C字符串写入流。如果格式包含格式说明符(以“%”开头的子序列),则格式后面的附加参数将被格式化并插入到结果字符串中,以替换其各自的说明符。 在format参数之后,函数需要至少与format指定的数量相同的附加参数。 我们可以用printf()和fprintf()作对比fprintf()函数前面多了一个FILE* stream的参数,它表示的是流的意思。 前面说过,printf()是默认输出到stdout流,这里的fprintf()函数就可以自己设置输出到哪个流。 如果fprintf()函数的第一个参数是stdout, 可以等价于printf()函数。 二、stdin介绍 我们来看看scanf()函数和fscanf()函数的区别函数 sacnf int scanf(const char* format, ...); 从标准输入读取格式化数据 从stdin读取数据,并根据参数格式将其存储到附加参数所指向的位置。 附加参数应指向已分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。 函数 fsacnf int fscanf(FILE* stream, const char* format, ...); 从流中读取格式化数据 从流读取格式化数据从流读取数据,并根据参数格式将其存储到附加参数所指向的位置。 附加参数应指向已分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。 我们不难得出,fscanf()函数的范围更加广一些,我们可以把第一个参数写成文件指针,那么我们可以从一个文件中读取到信息(fprintf()函数也可以第一个参数位文件指针,可以输出到文件当中,就不会显示到我们的屏幕上)。 当然,也可以是stdin,这和scanf()函数等价。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |