假如说
data;首先,您需要在data. 不要忘记0字符串末尾的字节空间。
data = malloc(s+1);
if (data == NULL) {
... /*out-of-memory handler*/
}
Run Code Online (Sandbox Code Playgroud)
假设malloc成功,您现在可以复制字节。
编辑:
正如 caf 所指出的,这项工作的最佳函数是strncat. (它是完全可移植的,是 C89 的一部分。)它附加到目标字符串,因此事先将目标安排为空字符串:
*(char*)data = 0;
strncat(data, buf, s);
Run Code Online (Sandbox Code Playgroud)
其他较低的可能性,保留在这里作为相关功能的示例:
如果你有strlcpy(这不是标准的 C,但在现代 Unix 系统上很常见;有一些公共领域的实现):
strlcpy(data, buf, s+1);
Run Code Online (Sandbox Code Playgroud)如果您知道s源字符串中至少有字符,则可以使用memcpy:
memcpy(data, buf, s);
Run Code Online (Sandbox Code Playgroud)
((char*)data)[s+1] = 0;
否则,您可以先计算源字符串的长度:
size_t bytes_to_copy = strlen(buf);
if (bytes_to_copy > s) bytes_to_copy = s;
memcpy(data, buf, bytes_to_copy);
((char*)data)[s+1] = 0;
Run Code Online (Sandbox Code Playgroud)或者您可以使用strncpy,但如果源字符串的实际长度远小于 ,则效率低下s:
strncpy(data, buf, s);
((char*)data)[s+1] = 0;
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
15783 次 |
| 最近记录: |