请教C语言的输入输出概念问题!
1,我想问一个概念,就是所谓“标准输入”以及“标准输出”。据我所知,get类函数(gets,getchar)应该属于标准输入,而scanf是属于格式输入(即不是标准输入)...
1,我想问一个概念,就是所谓“标准输入”以及“标准输出”。据我所知,get类函数(gets,getchar)应该属于标准输入,而scanf是属于格式输入(即不是标准输入),是不是这样?
2,如果不是这样的话(也就是说scanf也属于标准输入的话),我查阅的教科书是美国人那儿译过来的《Unix环境高级编程》,为什么他在“标准I/O库”这一章节里完全不提这个函数?而只讲了get、put类函数?
3,scanf,get函数,他们的根本区别在哪里?我知道scanf不能识别空格,而get只有单字符、单行、全缓冲三种方式,但我想知道这两个函数的原理上有什么区别?get函数有一个内核分配的IO缓冲区,scanf有没有呢?
我刚学C代码,请教各位大牛,希望能够解释得详细一些!谢谢! 展开
2,如果不是这样的话(也就是说scanf也属于标准输入的话),我查阅的教科书是美国人那儿译过来的《Unix环境高级编程》,为什么他在“标准I/O库”这一章节里完全不提这个函数?而只讲了get、put类函数?
3,scanf,get函数,他们的根本区别在哪里?我知道scanf不能识别空格,而get只有单字符、单行、全缓冲三种方式,但我想知道这两个函数的原理上有什么区别?get函数有一个内核分配的IO缓冲区,scanf有没有呢?
我刚学C代码,请教各位大牛,希望能够解释得详细一些!谢谢! 展开
3个回答
展开全部
1、标准io 即 STDIN,STDOUT 是操作系统预制的虚拟设备,gets,getchar和scanf都是标准输入的。
2、scanf相比get,put来说,对输入“多做了一些事情”,属于“高级”函数,教科书讲案例,写Demo程序,不提这个函数很正常。
3、getchar只接收1字符,以int返回,当然不需要缓冲区;
但gets返回不定长字符串,是需要足够的外部缓冲区的(gets其实是个玩具函数);
scanf根据一些约定的格式,将字符串进行了处理,它也需要足够的外部缓冲区;
2、scanf相比get,put来说,对输入“多做了一些事情”,属于“高级”函数,教科书讲案例,写Demo程序,不提这个函数很正常。
3、getchar只接收1字符,以int返回,当然不需要缓冲区;
但gets返回不定长字符串,是需要足够的外部缓冲区的(gets其实是个玩具函数);
scanf根据一些约定的格式,将字符串进行了处理,它也需要足够的外部缓冲区;
追问
谢谢你,我明白了。饿,玩具函数是什么意思?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询