书上只举了回退一个字符的例子,
另外,“如果回退多个字符,字符数不得超过已读取的个数。”是指什么意思。
如果回退多个字符的话,那么函数的返回值int是什么?
注意点:
ungetc 不能连续多次调用。两次 ungetc 调用之间必须至少有一次读操作或者文件指针移动操作(fseek,rewind 等 ) , ungetc 只影响输入流,而不影响与输入流关联的外存文件。对于以二进制方式打开的流,ungetc 会使读指针减 1 ,如果当前位置为 0 ,则减 1 后结果 无法预测。紧跟在fscanf 后面的 ungetc 也可能会失败,因为 fscanf 中就用到了 ungetc。
Some library implementations may support this function to be called multiple times, making the characters available in the reverse order in which they were put back. Although this behavior has no standard portability guarantees, and further calls may simply fail after any number of calls beyond the first.
虽然有些类库会支持多次调用这个函数,但是如果代码移植的时候,可能不能保证都能执行成功
退回的是已读取到的字符,所以退回的字符数不能超过已经读取的。就像你去银行取了100块钱,你要再存进去,只能小于等于100块。
在标准函数库里面,只能退回一个字符,成功后返回的是退回的字符,如果你的类库支持退回多个,那你需要查看一下你的类库的说明文档。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。