问题标签 [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.
c - fefo 在 while 循环的最后一次迭代中没有检查 EOF?
我有一个使用 ungetc 和 fefo 函数的代码,但我注意到 fefo 没有检查 EOF 下面是我的代码
输入是:
如果没有明确检查 EOF,则输出
显式检查 EOF 时输出
为什么我需要检查 EOF 并在 fefo 时中断?
php - 类似 ungetc 的函数在 php
php中是否有类似于ungetc
C的函数?我的意思是一个将角色放回流中的函数?
c - 修改 fflush() 以保证在 C 中连续调用 ungetc() 两次
我是 C 初学者,我想连续调用 ungetc() 两次,尽管我知道在常规 C 中这是不允许的。有人告诉我我可以修改Fflush()
来完成这项工作,但我不知道该怎么做。
这是我的代码,我Fflush
只允许一个ungetc()
,我希望它允许两次。
c - 为什么输入“abc!!!” 但输出不是“abc++”?
我正在研究输入/输出文件。下面的代码涉及一些函数,例如:fgetc()、fgets()、fputs()。我不知道为什么它不能完全按照我的意愿工作。非常感谢!下面是我的代码:
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 内存上的内容。
感谢您的见解
c - 使用 fscanf 查找空行
我应该读取一些从“A”到“Z”命名的变量,然后评估它们。变量中的值是矩阵。这是示例输入:
我编写了一个可以正确读取所有变量的算法。但是我无法检测到空行。我写了这个:
我假设对于空行,fscanf(input, "\n%c", &next)
会读'\n'
入next
,但实际上它会跳过第二行并读取R
.
如何检查 C 中流中的下一行是否为空?
c - 为什么 ungetc 在某些字符上会失败?
ungetc()
似乎在某些角色上失败了。这是一个简单的测试程序:
我在 unix 系统上运行它并a
Enter在提示符下键入
输出是:
我期待这个:
为什么会导致ungetc()
失败?
编辑:更糟糕的是,我在不同的 unix 系统上测试了相同的代码,它的行为与预期的一样。是否存在某种未定义的行为?
c - 使用ungetc() 来获取stdin 的长度以分配内存,这可能吗?
这是我想要做的逻辑;
- 在名为ch的变量中使用fgetc()获取输入字符,
- 检查不是ch是EOF还是等于'\n',
- 增加名为counter的int 变量,
- 然后使用ungetc()将变量ch放入标准输入
- 重复过程
之后,使用counter分配内存。再次,使用fgetc()获取stdin中的 char并将其存储到数组中。
这个想法只适用于一个字符输入。这是我为两个或多个输入编写的代码;
这是我输入qwert作为输入时控制台的输出;
读取第一个字符后,它会继续读取第一个字符,永远不会得到第二个或其他字符。
操作系统:Windows 10 | MinGW gcc-9.1.0
我究竟做错了什么?甚至可能吗?