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

ssh - 在“ssh”的 popen() 上调用 fgets() 正在刷新调用进程的标准输入的开头(ptty 问题)

我现在已经将其缩减为一个最小的测试用例。到目前为止,我已经能够确定这是与 ssh 管道出现的伪终端有关的问题。在 ssh 调用中添加“-t -t”可以改善问题,因为现在需要再次调用 fgets() 才能导致问题。我怀疑 ssh 命令的 stderr 输出以某种方式解决了这个问题,现在我已将 stderr 重定向到 ssh 代码中的 stdout 以执行。我确实想知道“tcgetattr:无效参数”错误是否是问题的一部分,但我不确定如何摆脱它。它似乎来自存在的 -t -t 。我相信 -t -t 正朝着正确的方向发展,但我必须以某种方式为 stderr 设置伪终端,也许测试会正常工作?

生成文件:

test.c 源文件:

这表明它正在运行:

这表明它以失败的方式运行:

0 投票
4 回答
13999 浏览

python - 在 C 中模仿 Python 的 strip() 函数

我最近开始在 C 中进行一个小玩具项目,并且一直在摸索模仿作为 python 字符串对象一部分的 strip() 功能的最佳方法。

阅读 fscanf 或 sscanf 表示字符串被处理到遇到的第一个空格。

fgets 也无济于事,因为我仍然有换行符。我确实尝试了 strchr() 来搜索空格并将返回的指针明确设置为 '\0' ,但这似乎不起作用。

0 投票
4 回答
6030 浏览

c++ - C ++中的Fgets重复最后一行

我有类似的程序(来自链接文本

和文件一样

程序的输出是

它重复文件的最后一行两次。我在其他程序中也有这个问题。

0 投票
5 回答
35683 浏览

c - fgets() 是否总是用 \0 终止字符缓冲区?

即使已经达到 EOF, fgets() 是否总是以 \0 终止字符缓冲区?看起来确实如此(在 ANSI K&R 书中介绍的实现中确实如此),但我想我会要求确定。

我猜这个问题适用于其他类似的函数,比如gets()。

编辑:我知道 \0 在“正常”情况下附加,我的问题是针对 EOF 或错误条件。例如:

0 投票
13 回答
201117 浏览

c - 为什么gets函数如此危险以至于不应该使用它?

当我尝试gets()通过 GCC 编译使用该函数的 C 代码时,我收到以下警告:

(.text+0x34): 警告:“gets”功能很危险,不应使用。

我记得这与堆栈保护和安全性有关,但我不确定为什么。

我怎样才能删除这个警告,为什么会有这样一个关于 using 的警告gets()

gets()既然如此危险,为什么我们不能删除它?

0 投票
4 回答
268 浏览

c - 如何在C中检索数据而不是整行?

现在我使用:

从输入中获取行,例如:

我可以在 C 中使用其他东西,它不会给我整行,直到 '\n' 而是单独的对,比如:“city=Boston”然后是“name=Bob”等?

0 投票
4 回答
651 浏览

c++ - 我在 C++ 中的 http 服务器没有正确发回所有文件

我正在使用 c++ 开发 HTTP 服务器,现在它适用于文本文件的请求,但是当尝试获取 jpeg 或其他内容时,只有部分文件被发送。问题似乎是当我使用 fgets(buffer, 2000, returned_file) 时,它似乎增加了文件位置指示器,而不是它实际上最终放入缓冲区。为什么会发生这种情况?我把我所有的代码放在下面。问题出现在响应码为200时发生的while(true)循环中。感谢任何回复的人。

0 投票
7 回答
5827 浏览

c - 如何在C中逐行读取文件?

我有一个文本文件,最多包含 100 个 IP 地址,每行 1 个。我需要将每个地址作为字符串读入一个名为“list”的数组中。首先,我假设“列表”需要是一个二维字符数组。每个 IP 地址长度为 11 个字符,如果包含 '\0' 则为 12 个字符,因此我声明列表如下:

char list[100][12];

接下来,我尝试使用 fgets 来读取流:

为了检查字符串是否被正确读取,我尝试输出它们:

运行程序后,很明显有问题。作为初学者,我不确定是什么,但我猜我读错了文件。没有错误。它编译,但在两行上打印一个奇怪的地址。

编辑:

我用这个替换了 fgets 代码:

它现在打印五个字符串,但它们是内存中的“随机”字符。

0 投票
4 回答
1741 浏览

php - 在 PHP 中使用 fsockopen() 和 fgets() 时,while() 循环如何不停止?

这是一个小型 PHP IRC 机器人的基本连接代码。问题是,似乎 while() 循环在从 IRC 服务器接收数据之前不会超出 fgets()。无论 IRC 服务器是否尚未发送数据,我都希望 while() 循环进行迭代。这可能吗?

0 投票
2 回答
151 浏览

c - 在一行内插入文本

我有一个文件指针,我将它与 fgets() 一起使用,以给我一个完整的行以及缓冲区中的新行。我想替换 1 个字符并在新行之前添加另一个字符。那可能吗?例如:

这是代码:

如您所见,我在这里替换了新行(示例行如上所示)。我想插入文本并保留新行,而不是我在上面所做的。