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()
是什么用。
答案 0 :(得分:11)
putc
会将某些内容写入输出,因此它会显示在屏幕上或您重定向输出的文件中。
ungetc
将某些内容放回输入缓冲区,以便下次调用getc
(或fgetc
等)时,这就是你要做的事情得到。
您通常使用putc
来编写输出。你通常在阅读输入时使用ungetc
,而你知道自己已经达到某种结果的唯一方法就是当你读到一个不能成为当前“某事”一部分的角色时。例如,你正在阅读并转换一个整数,你继续阅读,直到你读到一个数字以外的东西 - 然后你ungetc
将非数字字符作为来自流的下一个东西进行处理。
答案 1 :(得分:2)
ungetc适用于为读取而打开的流,不会修改原始文件。 putc适用于为写入而打开的流,并实际将字节写入文件。
答案 2 :(得分:0)
如果您在流ungetc
上执行了fp
,然后再次执行getc
,则会返回您刚才添加的相同角色。如果您{{1}如果有什么东西,“流会继续前进”,随后的putc
会得到它后面的任何东西......
getc
和getc
用于“向前看”并在处理字符时遇到一些特殊情况时将其放回去。例如