老牛来学习 发表于 2020-4-21 16:30:44

关于getc,getch,getchar,fgetc,gets函数的理解及流的理解问题

本帖最后由 老牛来学习 于 2020-4-21 16:31 编辑

关于getc,getch,getchar,fgetc,gets函数的理解总结。

首先说一下对“流”的理解,流即文件,文件就是数据,所以流就是数据,stdin流是键盘标准输入流,
当我们使用scanf函数是就相当于,打开了键盘这个文件并对键盘输入的内容,也就是标准输入流进行操作。
C程序是不能直接对固件进行操作的,因为直接对固件操作会很慢,所以用了一种文件缓冲区符的方法。
拿stdin流比喻:在程序运行时,会在内存中开辟一个512B的文件缓冲区,将stdin流先存放在缓冲区中,用到时从
缓冲区取。
再拿fopen函数打开文件与上面一样。。
(上面是我的理解,求大佬帮我纠错!)

下面是对几个函数的理解:
getc只能用于文件,int getc(FILE *stream);(这是putc函数声明)
通过声明可以看出getc只对FILE类型的指针进行操作,getc(fp)相当于把fp文件指针目前所指向的字符输入。
如果读取失败或者到了文件结束符返回EOF;

问题:
1、我用getc(stdin)也没问题,C语言是吧stdin定义成一个文件指针了,所以可以我们可以使用吗?
2、之前有一段代码是这样写的putc(getc(fp1),fp2);它这getc(fp1)取出来的内容放在哪,然后继续操作?
因为感觉之前写的时候取到值之后,先赋给一个变量,让它有自己的空间。此时取到的值没有内存空间啊,putc如何对它操作?


getch()、getche和getchar:都是由标准stdin流输入一个字符,区别在于
getch()由键盘输入一个值不按回车,直接输入,并且输入内容不回显,所以在老版的编译器中,用于解决程序运行完立马关闭的用途,类似现在的press any key...
getche() 与getch的区别就是一个回显,一个不回显。其他一样
getchar()与上面的区别是输入后回显并需要按下空格后才输入。


想确认一下我的理解对不对,有问题麻烦指出,谢谢!!!!!!

永恒的蓝色梦想 发表于 2020-4-21 16:33:43

领鱼币,楼主好人{:10_254:}

老牛来学习 发表于 2020-4-21 16:35:16

永恒的蓝色梦想 发表于 2020-4-21 16:33
领鱼币,楼主好人

{:10_243:}不帮我答疑解惑吗?!

永恒的蓝色梦想 发表于 2020-4-21 16:35:53

老牛来学习 发表于 2020-4-21 16:35
不帮我答疑解惑吗?!

emmmm……我平常用 iostream{:10_262:}抱歉

Hello. 发表于 2020-4-21 16:42:25

^_^

jkluoling1992 发表于 2020-4-21 16:59:54

占楼

老牛来学习 发表于 2020-4-21 17:01:55

jkluoling1992 发表于 2020-4-21 16:59
占楼

兄嘚,你也不拯救我了...

乘号 发表于 2020-4-21 17:12:33

老牛来学习 发表于 2020-4-21 17:01
兄嘚,你也不拯救我了...

拯救你还得大神来{:10_256:}

sunrise085 发表于 2020-4-21 17:25:53

本帖最后由 sunrise085 于 2020-4-21 17:33 编辑

你的这些理解基本都是对的。
你可以在查一下FILE结构体,可能会对这个文件流有更好的理解。

1、C语言程序运行是会系统自动定义三个FILE类型的指针stdin、 stdout、 stderr ,分别指向终端输入(键盘输入)、终端输出(屏幕显示)、标准出错输出(也从终端输出)。在程序中是可以直接使用的
2、getc()的返回值就是读取到的那个字符,当然是可以直接使用的啦。这和你把getc()返回值赋值给一个变量,再使用是一样的,而且还减少了一个变量的消耗呢

老牛来学习 发表于 2020-4-21 17:29:52

sunrise085 发表于 2020-4-21 17:25
先领个鱼币。一会儿在编辑回答

还是最爱你!!!!!!!!!!!!!!

sunrise085 发表于 2020-4-21 17:33:47

老牛来学习 发表于 2020-4-21 17:29
还是最爱你!!!!!!!!!!!!!!

千万别酱紫!!
我是直男

jkluoling1992 发表于 2020-4-21 18:28:31

老牛来学习 发表于 2020-4-21 17:01
兄嘚,你也不拯救我了...

{:10_257:}我也不太懂,看大佬回答吧

FoOlN 发表于 2021-1-11 12:46:24

占楼
页: [1]
查看完整版本: 关于getc,getch,getchar,fgetc,gets函数的理解及流的理解问题