问题标签 [fgetc]

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 投票
2 回答
225 浏览

c - 如何将“具有副作用的表达式”传递给 getc?

“UNIX 环境中的高级编程,第 3 版”,第 151 页:

getc和之间的区别在于fgetc可以getc实现为宏,而fgetc不能实现为宏。这意味着三件事:

  • to 的参数getc不应是具有副作用的表达式
  • 既然fgetc保证是一个函数,我们就可以取它的地址。这允许我们将地址fgetc作为参数传递给另一个函数。
  • 调用 tofgetc可能比调用 需要更长的getc时间,因为调用函数通常需要更多时间。

以流指针为参数的函数签名会出现什么“具有副作用的表达式” ?

0 投票
1 回答
53 浏览

file-io - 将数据从一个文本文件保存和传输到另一个

将数据从一个文本文件传输到另一个文件时出现问题。我的想法是按字符转移它,但它似乎不起作用。我在开头添加了这些代码

这组代码处于开关状态

我只是了解了这些文件操作,并不知道出了什么问题

如果我打开我的 Address Book.txt 文件,它只会显示我的 temporary.txt 的第一个字符,但会连续显示(永无止境)。

0 投票
1 回答
627 浏览

c++ - 如何从 getc 读取过去的 EOF?

我正在编写一个 XOR 加密程序,它在加密期间工作正常,但在解密期间

字符 ca2=fgetc(f);

卡在某一点上,之后就没有解密发生了在那里并停止阅读下一个字符。

这是 getc() 的某种限制吗?这是我的垃圾代码

0 投票
3 回答
2195 浏览

c - 一个文件有多少个字符?

我想知道是否有一种方法可以从文件中读取字符并将它们保存到没有指定数组长度的数组中。

在正常情况下,我会阅读所有字符并计算它们。(步骤 1)然后我用 malloc 创建数组并从文件中读取字符,所以我被迫读取整个文件两次。可以只读一读吗?

0 投票
0 回答
149 浏览

c - 我是疯了还是我发现 C 的设计有问题?

好的,所以 fgetc() 返回一个 unsigned char 强制转换为 int,并且 EOF 在... EOF。如果您尝试将配置文件读入 char 数组,并且您的实现的 char 已签名,该怎么办?C99 的标准说,不仅结果实现定义为将不可表示的值分配给有符号变量,而且实现也可以选择引发信号!

6.3.1.3 有符号和无符号整数

当整数类型的值转换为_Bool以外的其他整数类型时,如果该值可以用新类型表示,则保持不变。

否则,如果新类型是无符号的,则通过在新类型中可以表示的最大值重复加或减一来转换值,直到该值在新类型的范围内。49)

否则,新类型是有符号的,值不能在其中表示;结果是实现定义的,或者引发了实现定义的信号。

像这样的结构很常见:

如果 char 已签名并且 c 中的值高于可以表示的值,则执行强制转换也是实现定义的。

我发现我极不可能找到多年来成千上万的程序员遗漏的问题,尤其是在上述构造无处不在的情况下。

似乎通过这种方式读取的非文本代码可能会导致问题,因为某些字节可能具有不适合有符号字符的值。我从来没有见过真正解决这个投入使用的上述结构的修改版本。

我是否真的发现了与 C 标准相关的缺陷,或者注意到成千上万的其他程序员在他们的错误检查中没有并且未能实现?

0 投票
2 回答
54 浏览

c - 在 C 中行尾后阅读问题

所以,我无法从我的文件中读取。

我想读这个文件;

第一个 1 是我的玩家,而数组是我的游戏板。

所以我正在尝试使用以下代码阅读所有这些内容:

我的问题是我有时会在我的数组之外获得值,例如 -16 和 -38,它们分别引用 Space 和 LF。所以我的问题是:我怎样才能避免跑到这些 -16 和 -38 ?

非常感谢,对于任何英语错误,我深表歉意

0 投票
0 回答
111 浏览

c - fgetc 得到无效的字母

我正在开发一个加密解密程序,该程序使用修改后的 Vigenére 密码。即我在加密/解密 5 个字母后切换出 Vigenere 方块。如果文本很短但文本较长,它会很好地工作 fgetc() 开始返回无效值,就好像不是我试图解密的文件中实际存在的值一样。有时它开始返回 -1,有时只是无效字符。从某种意义上说,如果您使用文本编辑器检查文件,那里还有其他内容,则无效。如果您运行代码,该文件会创建 2 个调试文件,您可以在其中比较一个文件输出的内容和另一个文件从中获得的内容。这种减速似乎通常发生在 250 多个字符左右,但似乎并没有发生在完全相同的时间点。(我有超过 300 个文件,但它仍然有效)。

加密代码:

解密的代码是:

0 投票
1 回答
8904 浏览

c - C-检查第一个命令行参数中的第一个字符是否包含特定字符

如果第一个参数的第一个字符 == "-" 则输入 if 语句。我得到的错误是“传递'strcmp'的参数1使指针从整数而不进行强制转换”我也用fgetc试过这个,写得有点不同,但仍然得到这个错误。如果我施放它,我会得到一个核心转储。如果参数包含破折号,它将在同一参数中后跟数字,因此我不能只将 argv[1] 视为单个字符,如果可以的话,条件将非常简单:if (strcmp(argv[1], "-")==0)

功能

谢谢您的帮助

0 投票
1 回答
2042 浏览

c - C 编译错误 - “fgetc & fputc 参数太少”

我是 C 的新手,很难理解为什么它不能编译。该脚本应采用两个文本文件作为参数 - 读取第一个并将内容复制到第二个。我在编译时收到以下错误:

我不确定为什么它说 fgetc 应该接受更多参数,因为它显示在我的演讲幻灯片上接受一个参数?

0 投票
2 回答
1305 浏览

c - fgetc() 没有像我希望的那样工作

我希望我不会因此很快被否决,但我有一个正在为学校工作的项目,我必须在其中构建一个拼写检查器。我决定使用 trie,它似乎可以正常工作,但我有一个我找不到的错误。我认为问题在于以下,

但我一直找不到它。该项目的其余部分可以在

https://github.com/iMillJoe/spell-checker