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()又有什么用呢?
发布于 2011-05-21 13:29:51
putc将某些内容写入输出,因此它会出现在屏幕上或您将输出重定向到的文件中。
ungetc将一些内容放回输入缓冲区,因此下次调用getc (或fgetc等)时。这就是你会得到的。
您通常使用putc来编写输出。通常在读取输入时使用ungetc,唯一知道已到达某项末尾的方法是当您读取一个不能作为当前“某物”一部分的字符时。例如,你正在读取和转换一个整数,你会继续下去,直到你读取的不是一个数字--然后你ungetc那个非数字的字符,作为来自流的下一个东西来处理。
发布于 2011-05-21 13:28:51
ungetc使用打开的流进行读取,并且不修改原始文件。putc在为写入而打开的流上工作,并实际将字节写入文件。
发布于 2011-05-21 13:28:04
如果您在流fp上执行ungetc,然后再次执行getc,您将得到刚刚输入的相同字符。如果你做了putc,“流继续”,随后的getc将得到它之后的任何东西,如果有什么……getc和ungetc用于“向前看”,如果在处理字符时有特殊情况,则将其放回原处。
https://stackoverflow.com/questions/6079785
复制相似问题