putc和ungetc有什么区别?

int ungetc(int c, FILE *fp)将字符c推回fp,并返回c或EOF以查找错误。

其中int putc(int c, FILE *fp)将字符c写入文件fp并返回写入的字符,或返回错误的EOF

//这些是K&R的陈述。 我发现自己很困惑,因为putc()可以在getc之后使用,并且可以作为ungetc工作。 那么具体定义ungetc()的用法是什么。

putc写入要输出的内容,因此它出现在屏幕上或您重定向输出的文件中。

ungetc将一些东西放回输入缓冲区,所以下次你调用getc (或fgetc等)就是你得到的东西。

您通常使用putc来写输出。 你通常在阅读输入时使用ungetc ,而你知道自己已经达到某种结果的唯一方法就是当你读到一个不能成为当前“某事”一部分的角色时。 例如,你正在阅读并转换一个整数,你继续阅读,直到你读到一个数字以外的东西 – 然后你将ungetc那个非数字字符作为来自流的下一个东西来处理。

ungetc适用于打开读取的流,不会修改原始文件。 putc适用于为写入而打开的流,并实际将字节写入文件。

如果你在流fp上执行ungetc ,然后再次执行getc ,则会返回刚刚放入的相同角色。如果你执行了putc则“流移动”,随后的getc将获得后面的内容,如果有什么… getcungetc用于“向前看”并在处理字符时有一些特殊情况将其放回去