菜鸟提问,关于getch()与ungetch()函数!16
发布网友
发布时间:2023-10-21 11:50
我来回答
共2个回答
热心网友
时间:2024-12-01 07:38
K&R 里的getch()和unget()函数其实是模拟了stdio.h里的getc() 和ungetc()
数据在输入输出时 要经过一个叫做缓冲区(buffer)的地方
原来缓存那些数据
当调用getc()的时候 标准输入里的一个字符会被放入缓冲区中
再把缓冲区里的字符赋到变量里
当调用ungetc(c)的时候 作为程序参数的那个字符c会被回放到缓冲区中 (压回输入中)
给你个例子
c = getc(stdin);
c = getc(stdin);
ungetc(c, stdin);
c = getc(stdin);
printf("%c\n", c);
这段程序运行时
输入"abc"
程序会先读入'a'
再读入下一个字符'b'
然后把'b'放回缓冲区中
然后再读入...这时读入的是缓冲区里的'b'
所以三次读入 但最后输出的是'b'
你可以自己实验一下
热心网友
时间:2024-12-01 07:38
请把主要的调用这2个函数的代码贴出来看看,否则这样看
只是表示getch()是从buf中取字符,如果buf为空,则取当前字符缓冲中的第一个字符
ungetch则是放字符到buf中,放满了则提示"ungetch: too many char characters\n)"