putc 和 unetc 有什么区别
What is the difference between putc and ungetc?
>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
将得到它之后的任何东西,如果有的话......getc
和ungetc
用于"提前偷看",如果在处理字符时有一些特殊情况,例如
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?
- ascii 和 unicode 在处理级别有什么区别吗?
- C 中的常量限定符和 C++ 中的常量限定符有什么区别?
- "ABC" 和 "ABC" ) 在C++中有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 这两种C++语法之间有什么区别?
- lua 5.0.2 模块和 5.3.5 有什么区别?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- std::enable_if 和 std::enable_if_t 有什么区别?