问题标签 [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.
c - C:使用 sprintf 和 strncpy 将数据插入指针数组
我有一个包含指针数组的结构。我想以字符串格式插入数组数字,即“1”、“2”等。
但是,使用 sprintf 或 strncpy 有什么区别吗?
我的代码有什么大错误吗?我知道我必须免费拨打电话,我将在我的代码的另一部分中这样做。
非常感谢您的任何建议!
c++ - 为什么 strncpy 不安全?
我正在寻找为什么 strncpy 被认为是不安全的。是否有人对此有任何类型的文档或使用它的利用示例?
c - strncpy 并使用 sizeof 复制最大字符
我正在使用下面的代码
我总是使用 sizeof 作为目标来保护溢出,以防源大于目标。这样我可以防止缓冲区溢出,因为它只会复制目的地可以处理的尽可能多的内容。
但我现在想知道它是否会终止目的地。
几个案例。
1) 如果源更大。我可以这样做:
2)如果源小于目标。call 是 64 个字节,我复制了 50 个字节,因为这是源的大小。它会自动将 null 放在 51 元素中吗?
非常感谢您提供的任何信息,
c - 为 strncpy 创建一个包装器以插入终止 null
我决定制作一个包装器,strncpy
因为我的源代码需要我做很多字符串副本。如果源等于或大于目标,我想确保字符串终止。
这段代码将在生产中使用,所以我只想看看使用这个包装器是否有任何潜在的危险。
我以前从未做过包装,所以我试图让它变得完美。
非常感谢您的任何建议,
====编辑更新====
c - 为什么要使用 strncpy 而不是 strcpy?
编辑:我已经添加了示例的源代码。
我遇到了这个例子:
产生了这个输出:
这让我想知道为什么有人会想要这种效果。看起来会很混乱。这个程序让我觉得你基本上可以用 Tom Bro763 复制某人的名字(例如 Tom Brokaw)。
使用 strncpy()
over strcpy()
有什么好处?
c - 为什么 strncpy 不为空终止?
strncpy()
据说可以防止缓冲区溢出。但是,如果它在没有空终止的情况下防止溢出,那么后续的字符串操作很可能会溢出。因此,为了防止这种情况,我发现自己在做:
man strncpy
给出:
功能类似,只是复制的字节数
strncpy()
不超过。因此,如果 的第一个字节中没有空字节,则结果将不会以空值结尾。n
src
n
src
没有 null 终止看似无辜的事情,例如:
...可能会崩溃。
是否有更好、更安全的替代方案strncpy()
?
c - 为什么 strlcpy 和 strlcat 被认为是不安全的?
我理解这一点,strlcpy
并且被设计为和strlcat
的安全替代品。但是,有些人仍然认为他们不安全,并且只会导致不同类型的问题。strncpy
strncat
有人可以举例说明使用strlcpy
or strlcat
(即始终为null 终止其字符串的函数)如何导致安全问题吗?
Ulrich Drepper 和 James Antill 声明这是真的,但从未提供示例或澄清这一点。
c - 未初始化的值是由堆分配创建的
我一直在追逐这个错误,我就是不明白。我是否忘记了一些基本的C或其他东西?
第 96 行打印参数“char *input”就好了(DEBUG_ON==1),但第 105 行吐出了 valgrind 错误(它在控制台中打印得很好)。“char *input”源自获取一行输入的 getline(),在此函数的情况下,将类似于不带引号的“path /test/path”。我可以在前面的函数中很好地打印和操作它。什么是“char *inputCopy”未初始化?有任何想法吗?提前致谢!
c - 使用 strncpy 将文件逐行复制到 char 数组中
所以我试图逐行读取文本文件并将每一行保存到一个字符数组中。
从循环中的打印输出中,我可以看出它正在正确计算行数和每行的字符数,但我遇到了strncpy
. 当我尝试打印数据数组时,它只显示 2 个奇怪的字符。我从未与之合作过,strncpy
所以我觉得我的问题可能与空终止有关。
c - 改变静态数组
我在文件中声明了一个静态变量:
在一个类的方法之一中,我正在这样做:
当我执行 strncopy 时,程序崩溃了。我不确定我做错了什么