putc 和 unetc 有什么区别

What is the difference between putc and ungetc?

本文关键字:什么 区别 unetc putc      更新时间:2023-10-16

>int ungetc(int c, FILE *fp)将字符 c 推回 fp,并返回 c 或 EOF 表示错误。

其中 as 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用于"提前偷看",如果在处理字符时有一些特殊情况,例如