我有一个文件在我的程序中作为标准输入传递。一个非常大的循环的每次迭代,方法“get_next”都会调用 getchar,并获取 stdin 中的下一个字符并将其分配给名为 nchar 的变量。
问题是,我有一个实例,我必须查看当前 nchar 之后的 char,而不更改下一次调用 get_next 的操作。这意味着,我必须调用 getchar() 而不改变缓冲区的状态。
有办法做到这一点吗?是否有像“getcharStatic”这样的方法可以在不更改缓冲区的情况下返回下一个字符,就像堆栈的 peek 与 pop 一样?
或者,有没有一种方法可以使用 getchar 正常读取字符,然后将字符插入到我从中获取的位置,从而人为地保存缓冲区的状态?
我尝试谷歌搜索一段时间,我认为问题涉及过于模糊的术语和标签。感谢您的帮助!
最佳答案
您可以使用 ungetc()
将字符推回标准输入。这是 doc 的简介:
int ungetc( int ch, FILE *stream );
If ch does not equal EOF, pushes the character ch (reinterpreted as unsigned char) into the input buffer associated with the stream stream in such a manner that subsequent read operation from stream will retrieve that character.
关于c - 在C中,是否可以从getchar的当前缓冲区位置读取字符而不移动缓冲区的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939228/