问题标签 [ungetc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1843 浏览

java - InputStreamReader.markSupported 为假

我需要从InputStreamReader. 为此,我想使用mark并返回该类reset,因为它不维护内部缓冲区和/或字符队列。markSupportedfalseInputStreamReader

我知道BufferedInputStreamPushbackInputStream但在这里都不合适,因为它们以字节为基础缓冲,而我需要 characters

Java 是否提供可以读取字符的缓冲字符阅读器?实际上,让我进一步限制,我只需要取消读取单个字符(用于前瞻目的)。我真的需要保持自己的前瞻吗?

0 投票
6 回答
2210 浏览

python - Python中的ungetc

Python中的一些文件读取(readlines())函数
将文件内容复制到内存(作为列表)

我需要处理一个太大而
无法在内存中复制的文件,因此需要使用
文件指针(一次访问一个字节的文件
)——如在 C getc() 中。

我还有一个额外的要求是
我想将文件指针倒回到以前的
字节,就像在 C ungetc() 中一样。

有没有办法在 Python 中做到这一点?


此外,在 Python 中,我可以使用 readline() 一次 读取一行

有没有办法
向后阅读上一行?

0 投票
3 回答
1579 浏览

c++ - 是否有 ungetc 的 C++ 版本?

是否有 ungetc 的 C++ 版本?

也就是说,我可以将一个角色放回 istream 上吗?

0 投票
3 回答
1931 浏览

c - ungetc:推回的字节数

ungetc 只保证接受一个字节的回退。另一方面,我已经在 Windows 和 Linux 上对其进行了测试,它似乎可以使用两个字节。

是否有任何平台(例如任何当前的 Unix 系统)实际上只占用一个字节?

0 投票
1 回答
226 浏览

c++ - SolFS 中这些功能的等价物?

我正在为应用程序进行扩展。我的扩展使用SolFS,我想用它将所有文件流量重定向到 SolFS。为了实现这一点,我需要一些帮助,因为 SolFS 没有所有需要的功能的等价物(确切地说是 3 个)

这是我将“转换”的代码:http: //pastebin.com/REh5MqSa

这是 SolFS 拥有的东西的列表:

我可以自己轻松创建这些:

有了这个,我需要你的帮助:

我将如何使用 SolFS 提供的函数创建 ungetc、lseek 和 fileno(fileno 用于 lseek)等价物?

0 投票
3 回答
752 浏览

c - 在一个简单的 getword 中理解 ungetc 的使用

我遇到过这样一个getword的例子。我了解所有检查等,但我对 ungetc 有疑问。

c满足if ((!isalpha(c)) || c == EOF)且不满足while (isalnum(c)) 时 -> 它不是字母,也不是数字 -ungetc拒绝那个char

让我们假设它是'\n'

然后它到达return word但是它不能被返回,因为它没有保存在任何数组中。那会发生什么?

编辑 @Mark Byers - 谢谢,但是 c 被拒绝是有目的的,并且不会在无限循环中一次又一次地满足条件?

0 投票
2 回答
1126 浏览

perl - IO::Handle 获取和取消获取 unicode 字符

我想我遇到了 Unicode 和 IO::Handle 的问题。我很可能做错了什么。我想从 IO::Handle 获取和取消获取单个 unicode 字符(不是字节)。但我遇到了一个令人惊讶的错误。

来自 ungetc() 行的错误消息是“在 unicode.pl 第 21 行中说的格式错误的 UTF-8 字符(字符串的意外结尾)。” \x{00c5}“未映射到 unicode.pl 第 21 行的 utf8。” 但这是字符的正确十六进制,它应该映射到字符。

我使用十六进制编辑器来确保 A-RING 的字节对于 UTF-8 是正确的。

这似乎是任何两字节字符的问题。

最后的输出'\xC5'(字面意思是四个字符:反斜杠,x,C,5)。

我已经通过从文件而不是标量变量中读取来测试了这一点。结果是一样的。

这是为 darwin-2level 构建的 perl 5,版本 16,subversion 2 (v5.16.2)

并且脚本以 UTF-8 保存。这是我检查的第一件事。

0 投票
2 回答
1519 浏览

c - 取消 ungetc() 的影响:“如何” fseek()、rewind() 和 fsetpos() 做到这一点?每次都重新填充缓冲区吗?

呵呵!!我该如何把整个事情放在一个明确的问题中!!让我试试:

我知道使用打开的文件fopen()被缓冲到内存中。我们使用缓冲区来提高效率和易用性。在从文件读取期间,文件的内容首先被读取到缓冲区,然后我们从该缓冲区中读取。类似地,在写入文件,内容先写入缓冲区,然后写入文件。

但是fseek()fsetpos()之前rewind()调用的效果如何ungetc()呢?你能告诉我它是怎么做的吗?我的意思是,鉴于我们已经打开了一个文件进行读取并将它复制到缓冲区中。现在使用ungetc()我们已经更改了缓冲区中的一些字符。这就是我什至无法理解的内容很多努力:

  • 以下是关于ungetc()- “调用 fseek、fsetpos 或 rewind on stream 将丢弃之前使用此函数放回其中的任何字符。” --已经放入缓冲区的字符如何丢弃?一种方法是把原来被删除的字符“记住”,每一个放入的新字符都被识别并替换为原来的字符。但是这样看起来效率很低。另一种选择是将原始文件的副本加载到缓冲区中并将文件指针放在预期的位置。这两种方法中 fseek、fsetpos 或 rewind 采用哪种方法来丢弃使用的字符ungetc()

  • 对于文本流,流中未读字符的存在如何影响返回ungetc()ftell()ftell()ungetc()ftell

“对于文本流,数值可能没有意义,但仍可用于稍后使用 fseek 将位置恢复到相同位置(如果使用 ungetc 放回的字符仍等待读取,则行为未定义)。”

  • 关注上一段的最后一行,pending of being read与丢弃“ungetc()-obtained”字符有什么关系?每次我们读取一个放入流中的字符时ungetc(),它是否在读取后被丢弃
0 投票
2 回答
74 浏览

c - fscanf 和开关不工作

我正在尝试阅读此 .txt 文件:

( 1 2 ( 3 4 ( 5

使用此代码:

输出是:

( 1 2 2 ( 3 4 4 ( 5 5

它应该是:

( 1 2 ( 3 4 ( 5

我究竟做错了什么?

0 投票
2 回答
2168 浏览

c - 混淆重新分级 ungetc 功能

我不明白这个程序是如何工作的?

程序的输出 is- 第一次输入的字符被打印 5 次。

根据SO post putc和ungetc有什么区别? ungetc将一些东西放回输入缓冲区。

所以在这个程序中,在第一次迭代期间scanf()接受来自键盘的输入并printf()显示它,然后ungetc()将相同的字符推回输入缓冲区。

但是在第二次迭代期间,没有输入被接受,所以我猜printf()会打印被 . 推入输入缓冲区的字符ungetc()

有人可以清楚地解释这个程序是如何工作的吗?