putc和ungetc有什么区别?

时间:2011-05-21 05:23:38

标签: c++ c function

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()是什么用。

3 个答案:

答案 0 :(得分:11)

putc会将某些内容写入输出,因此它会显示在屏幕上或您重定向输出的文件中。

ungetc将某些内容放回输入缓冲区,以便下次调用getc(或fgetc等)时,这就是你要做的事情得到。

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

如果您在流ungetc上执行了fp,然后再次执行getc,则会返回您刚才添加的相同角色。如果您{{1}如果有什么东西,“流会继续前进”,随后的putc会得到它后面的任何东西...... getcgetc用于“向前看”并在处理字符时遇到一些特殊情况时将其放回去。例如