问题标签 [strncpy]

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 投票
5 回答
3697 浏览

c - C:使用 sprintf 和 strncpy 将数据插入指针数组

我有一个包含指针数组的结构。我想以字符串格式插入数组数字,即“1”、“2”等。

但是,使用 sprintf 或 strncpy 有什么区别吗?

我的代码有什么大错误吗?我知道我必须免费拨打电话,我将在我的代码的另一部分中这样做。

非常感谢您的任何建议!

0 投票
5 回答
56947 浏览

c++ - 为什么 strncpy 不安全?

我正在寻找为什么 strncpy 被认为是不安全的。是否有人对此有任何类型的文档或使用它的利用示例?

0 投票
7 回答
17372 浏览

c - strncpy 并使用 sizeof 复制最大字符

我正在使用下面的代码

我总是使用 sizeof 作为目标来保护溢出,以防源大于目标。这样我可以防止缓冲区溢出,因为它只会复制目的地可以处理的尽可能多的内容。

但我现在想知道它是否会终止目的地。

几个案例。

1) 如果源更大。我可以这样做:

2)如果源小于目标。call 是 64 个字节,我复制了 50 个字节,因为这是源的大小。它会自动将 null 放在 51 元素中吗?

非常感谢您提供的任何信息,

0 投票
5 回答
706 浏览

c - 为 strncpy 创建一个包装器以插入终止 null

我决定制作一个包装器,strncpy因为我的源代码需要我做很多字符串副本。如果源等于或大于目标,我想确保字符串终止。

这段代码将在生产中使用,所以我只想看看使用这个包装器是否有任何潜在的危险。

我以前从未做过包装,所以我试图让它变得完美。

非常感谢您的任何建议,

====编辑更新====

0 投票
10 回答
199014 浏览

c - 为什么要使用 strncpy 而不是 strcpy?

编辑:我已经添加了示例的源代码。

我遇到了这个例子

产生了这个输出:

这让我想知道为什么有人会想要这种效果。看起来会很混乱。这个程序让我觉得你基本上可以用 Tom Bro763 复制某人的名字(例如 Tom Brokaw)。

使用 strncpy() over strcpy()有什么好处?

0 投票
11 回答
104026 浏览

c - 为什么 strncpy 不为空终止?

strncpy()据说可以防止缓冲区溢出。但是,如果它在没有空终止的情况下防止溢出,那么后续的字符串操作很可能会溢出。因此,为了防止这种情况,我发现自己在做:


man strncpy给出:

功能类似,只是复制的字节数strncpy()不超过。因此,如果 的第一个字节中没有空字节,则结果将不会以空值结尾。nsrcnsrc

没有 null 终止看似无辜的事情,例如:

...可能会崩溃。


是否有更好、更安全的替代方案strncpy()

0 投票
8 回答
65296 浏览

c - 为什么 strlcpy 和 strlcat 被认为是不安全的?

我理解这一点,strlcpy并且被设计为和strlcat的安全替代品。但是,有些人仍然认为他们不安全,并且只会导致不同类型的问题strncpystrncat

有人可以举例说明使用strlcpyor strlcat(即始终为null 终止其字符串的函数)如何导致安全问题吗?

Ulrich Drepper 和 James Antill 声明这是真的,但从未提供示例或澄清这一点。

0 投票
3 回答
14507 浏览

c - 未初始化的值是由堆分配创建的

我一直在追逐这个错误,我就是不明白。我是否忘记了一些基本的C或其他东西?

第 96 行打印参数“char *input”就好了(DEBUG_ON==1),但第 105 行吐出了 valgrind 错误(它在控制台中打印得很好)。“char *input”源自获取一行输入的 getline(),在此函数的情况下,将类似于不带引号的“path /test/path”。我可以在前面的函数中很好地打印和操作它。什么是“char *inputCopy”未初始化?有任何想法吗?提前致谢!

0 投票
6 回答
3607 浏览

c - 使用 strncpy 将文件逐行复制到 char 数组中

所以我试图逐行读取文本文件并将每一行保存到一个字符数组中。

从循环中的打印输出中,我可以看出它正在正确计算行数和每行的字符数,但我遇到了strncpy. 当我尝试打印数据数组时,它只显示 2 个奇怪的字符。我从未与之合作过,strncpy所以我觉得我的问题可能与空终止有关。

0 投票
4 回答
2702 浏览

c - 改变静态数组

我在文件中声明了一个静态变量:

在一个类的方法之一中,我正在这样做:

当我执行 strncopy 时,程序崩溃了。我不确定我做错了什么