问题标签 [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 投票
1 回答
180 浏览

c - fefo 在 while 循环的最后一次迭代中没有检查 EOF?

我有一个使用 ungetc 和 fefo 函数的代码,但我注意到 fefo 没有检查 EOF 下面是我的代码

输入是:

如果没有明确检查 EOF,则输出

显式检查 EOF 时输出

为什么我需要检查 EOF 并在 fefo 时中断?

0 投票
1 回答
297 浏览

php - 类似 ungetc 的函数在 php

php中是否有类似于ungetcC的函数?我的意思是一个将角色放回流中的函数?

0 投票
2 回答
305 浏览

c - 修改 fflush() 以保证在 C 中连续调用 ungetc() 两次

我是 C 初学者,我想连续调用 ungetc() 两次,尽管我知道在常规 C 中这是不允许的。有人告诉我我可以修改Fflush()来完成这项工作,但我不知道该怎么做。

这是我的代码,我Fflush只允许一个ungetc(),我希望它允许两次。

0 投票
4 回答
151 浏览

c - 为什么输入“abc!!!” 但输出不是“abc++”?

我正在研究输入/输出文件。下面的代码涉及一些函数,例如:fgetc()、fgets()、fputs()。我不知道为什么它不能完全按照我的意愿工作。非常感谢!下面是我的代码:


0 投票
1 回答
79 浏览

c - 包装 ungetc() 不带 puts() gets() 和一般流

我正在将 net-snmp 移植到一个只能有限访问文件系统的嵌入式平台,我偶然发现了一个大问题。有一部分核心代码使用了 ungetc() 函数,而我没有。当然有2个解决方案:

A)使用我拥有的东西编写我自己的 ungetc()

B) 修改 net-snmp 代码以在不使用 ungetc() 的情况下达到相同的结果

解决方案(B)最终将在 net-snmp coders 邮件列表中讨论,因为需要深入了解库的内部结构,所以让我们关注(A)的可行性

我在嵌入式系统上拥有的是:

主要区别在于我的文件函数使用 INT32* 文件句柄而不是 FILE* 类型。我没有 FILE* 类型。

ungetc() 函数所做的基本上是“将字符放回流中”,无论是它刚刚读取的字符还是另一个字符。

在第一种情况下,解决方案很简单,我用 fseek() 将指针倒回一个位置。

但在第二种情况下,我有一个问题。我将修改流而不是文件,除非我没有流!我正在直接读取文件。

使用 ungetc() 你可以做类似的事情

如果“file.txt”包含“abcdefghi”,那么使用gets() 的后续读取将读取“bbcdefghi”而不是“abcdefghi”,因为流中的内容已更改,但文件未更改!

如果我没有“流”,我该如何复制这种行为?我的 getc() 和 gets() 从 INT32* 文件句柄中读取,我没有 puts() 或 putc() 等价物。

我只能用 fwrite() 写入,但这会改变 NV 内存上的内容。

感谢您的见解

0 投票
1 回答
837 浏览

c - 使用 fscanf 查找空行

我应该读取一些从“A”到“Z”命名的变量,然后评估它们。变量中的值是矩阵。这是示例输入:

我编写了一个可以正确读取所有变量的算法。但是我无法检测到空行。我写了这个:

我假设对于空行,fscanf(input, "\n%c", &next)会读'\n'next,但实际上它会跳过第二行并读取R.

如何检查 C 中流中的下一行是否为空?

0 投票
1 回答
337 浏览

c - 为什么 ungetc 在某些字符上会失败?

ungetc()似乎在某些角色上失败了。这是一个简单的测试程序:

我在 unix 系统上运行它并a Enter在提示符下键入

输出是:

我期待这个:

为什么会导致ungetc()失败?

编辑:更糟糕的是,我在不同的 unix 系统上测试了相同的代码,它的行为与预期的一样。是否存在某种未定义的行为?

0 投票
0 回答
48 浏览

c - 使用ungetc() 来获取stdin 的长度以分配内存,这可能吗?

这是我想要做的逻辑;

  • 在名为ch的变量中使用fgetc()获取输入字符,
  • 检查不是chEOF还是等于'\n'
  • 增加名为counter的int 变量,
  • 然后使用ungetc()将变量ch放入标准输入
  • 重复过程

之后,使用counter分配内存。再次,使用fgetc()获取stdin中的 char并将其存储到数组中。

这个想法只适用于一个字符输入。这是我为两个或多个输入编写的代码;

这是我输入qwert作为输入时控制台的输出;

读取第一个字符后,它会继续读取第一个字符,永远不会得到第二个或其他字符。

操作系统:Windows 10 | MinGW gcc-9.1.0

我究竟做错了什么?甚至可能吗?