c++ - 如何添加到已分配的字符?

标签 c++ c

这是一个非常简单的问题。

我有一个带有字符缓冲区 [250] 的结构。

struct testStruct{
   char buffer[250];
};

比方说,我如何向该缓冲区添加“测试字符”?

我真的不能做像 newStruct.buffer = "test characters"; 这样简单的赋值

最佳答案

您可以使用函数 sprintfsnprintfstrcpystrncpy

所以像这样:

sprintf(newStruct.buffer,"%s","test characters"); // doesnt protect against buffer overflow

snprintf(newStruct.buffer,250,"%s","test characters"); // guards against overflows

strcpy(newStruct.buffer,"test characters"); // as suggested in another answer also doesnt guard against overflows

strncpy(newStruct.buffer,"test characters",250);// guards against overflows

(而不是在 snprintfstrncpy 中明确提及大小 250,您可以改用 sizeof 函数/指令)


这会将“测试字符”放入缓冲区数组,末尾有一个 \0 字符 ...

如果以后需要,您可以使用 strcat 函数向其附加更多字符串。

这里是 sprintf 的 man 页面:

http://linux.die.net/man/3/sprintf

关于c++ - 如何添加到已分配的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873985/

相关文章:

c++ - 在C++中定义一个 'for'循环宏

c++ - 动态输出文件名 (C++)

c - 在循环之前编写相同代码的替代方法

c - 将整数提升为 long 或 unsigned long

java - 缩放函数/方法的参数/输入数量

c++ - 无法访问类中的常量静态成员

c# - 我将如何使用 C++/CLI dll 将 native 代码与 C# 中的多个依赖库一起包装?

c++ - 带有 "custom build tool"项目的 TFS 构建服务器

c - 如何按顺序将大尺寸的空指针转换为不同类型

c - 使用冒泡排序排列字符数组