问题标签 [fgets]

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 回答
3620 浏览

c - scanf 和 fgets 的问题

这是用于对一些给定字符串进行排序的家庭作业。我提示用户输入他们想要排序的字符串的scanf数量,根据该数字分配一个数组,然后自己获取字符串fgets

如果字符串的数量是硬编码的,一切都很好,但是添加scanf让用户决定把事情搞砸了。这是代码:

这是控制台的样子:

它跳过循环的第一次迭代,在数组的开头产生一个空字符串。我的问题是,为什么会这样,我该如何解决?


"%d\n"以下是传递给格式字符串的控制台的外观scanf

所以,我可以输入所有的字符串,但是字符串的第一个提示是在错误的地方。

0 投票
3 回答
1174 浏览

c - 读取用户输入并检查字符串

如何在 C 中检查读取的字符串中的子字符串?

如果我有以下

如何检查字符串中的一系列子字符串?

如何在字符之前检查子字符串?例如,如何在=符号之前检查子字符串?

0 投票
1 回答
5466 浏览

c - fgets() 中的数组大小

我使用 fgets 读取行格式 .txt 文件。我将数组作为第一个参数传递。不同的行填充数组中不同数量的空间,但我想知道读取的行的确切长度并据此做出决定。可能吗?

现在如果我要求 sizeof(third),它显然是 100,因为我自己声明了(我不能在不指定大小的情况下声明“第三个”数组)但我需要获取从文件中读取的行的确切大小(因为它可能不会填写整个数组)。

可能吗?应该怎么做?

0 投票
1 回答
657 浏览

fgets - 读取命令结果错误(fgets)

我用一个按钮写了一个简单的可可应用程序。

单击按钮时,将触发计时器:

这是计时器:

当我运行应用程序时,有时我会收到“fgets error”,似乎“line == fgets(line, 4096, fp))”失败但我不知道为什么?

有人可以向我解释一下为什么我有时会在这里随机出现“fgets错误”吗?

PS:我试图改变命令(从“ls”到“ps”);在终端中,我得到了结果:

计时器中的新代码:

我得到了日志:

我尝试多次运行该应用程序,并且“fgets错误”随机出现......

0 投票
1 回答
1078 浏览

php - fputs GET 卷曲

我有这个脚本,allow_url_fopen = On这不是一个好主意,我想改变curl。如果有人可以帮助我解决如何操作,我将不胜感激fputs GET

0 投票
5 回答
3031 浏览

php - Fgets() 但在字符串而不是文件上?

我可以执行以下操作:

但是他们有什么方法可以模拟相同的功能但在字符串上(而不是使用文件名)?

希望这是有道理的。

0 投票
1 回答
6164 浏览

c - C - fgets 段错误

我有以下代码:

它给了我一个标记的段错误。我完全不知道问题是什么,因为我在另一个程序中有以下代码:

它工作正常。我 100% 确定它没有在 atoi 上出现段错误。

这是否可以被其他人重现,我在使用 GCC 4.4.5 的 Linux amd64 上。它编译并且不输出任何警告。

由于它被请求,这里是调用 get_int 的代码:

调用它的代码是:

因此,您已到达调用堆栈的顶部。

0 投票
5 回答
12525 浏览

c - C fgets 与 fgetc 用于读取行

我需要阅读一行文本(以换行符结尾)而不对长度做出假设。所以我现在面临着可能性:

  • fgets每次使用并检查最后一个字符是否为换行符并不断追加到缓冲区
  • 使用缓冲区读取每个字符fgetc,偶尔realloc使用缓冲区

直觉告诉我这个fgetc变体可能会更慢,但是我不知道fgets如果不检查每个角色怎么能做到(而且我的直觉并不总是那么好)。线条很大,所以性能很重要。

我想知道每种方法的优缺点。先感谢您。

0 投票
1 回答
3298 浏览

c - fgets 后获取键盘输入

对于我的一生,我无法与 c 字符串和输入/输出和平相处。

对于我的程序,我只需输入一个字符串,然后在以下代码中对其进行处理:(tmpstring 和 ch 已经定义)

对于我的输入,我在终端中写:echo "test" | 。/程序

move() 内部;

执行此操作直接进入无效输入,而不要求更多输入。我已经阅读了所有关于你不应该清除标准输入的内容(这是不可能的),但我真的不知道该怎么做。我显然试图用 while 循环的第二部分“转储”标准输入。我已将第一个条件后的 && 更改为 || 在while循环中。不用找了。总的来说,在已经使用过 fgets 之后,我怎么能要求更多的输入呢?

*编辑:更多代码并分离原始的while循环

0 投票
5 回答
2563 浏览

php - 在解析 IMAP 时,base64 编码的字符串通过 fgets 调用被截断

我正在使用 Zend_Mail 解析电子邮件,奇怪的是,某些内容在没有明显原因的情况下被截断,并且电子邮件部分格式不正确。

例如

被截断为

每行上的 var_dump 显示了这一点。

或在其他电子邮件中

我不知道为什么停在那里。传输应该只在行尾停止。这是从 IMAP 服务器获取字符串的行。

编码的文本包含一个类似的字符串,但在不同的电子邮件中,这又在不同部分被截断。

我试图向 fgets() 添加大小但没有结果。我还启用/禁用了“auto_detect_line_endings”php_ini 设置,再次没有结果。

尽管错误似乎不在库中,但我还使用 ZF 打开了错误报告。

你看到这个编码字符串有什么奇怪的地方吗?

更新

新的研究表明,电子邮件在 584 个字符后被截断。还是不知道为什么。也向谷歌发送了一个问题。见这里

错误的电子邮件标题:

对于那些对答案感兴趣而不是对(前)赏金感兴趣的人,更多线索。

Gmail 将返回一个短值以响应 RFC822.SIZE,这可能会导致邮件被截断。(对于每个标题行,它们相差一个字节,显然不计算 CR/LF 的两个字符。)