我有:
struct strType{
char *str1;
char buff[128];
};
struct strType sType[3] = {
"String1", "",
"String2", "",
"string3" ""
};
如何将字符串分配给buff? 我的要求是我需要两个并行的字符串,一个是预定义的,另一个是运行时决定的。我正在考虑使用结构数组。但不能使用它们。
答案 0 :(得分:4)
使用buff
访问数组中struct strType
实例的sType[index].buff
部分。可以使用标准strcpy
:
strcpy(sType[0].buff, "String to put in buffer");
然而,将数据复制到这样的固定大小的缓冲区时使用strncpy
要安全得多(因为否则会打开缓冲区溢出的可能性,有人会崩溃或控制你的过程):
strncpy(sType[0].buff, "String to put in buffer", sizeof(sType[0].buff));
答案 1 :(得分:1)
我假设您正在寻找首先初始化结构数组。在这种情况下,您的代码应如下所示:
struct strType{
char *str1;
char buff[128];
};
struct strType sType[3] = {
{ NULL, "String1" },
{ NULL, "String2" },
{ NULL, "string3" }
};
然后,您可以像Jon's answer中一样使用 strncpy 将字符串复制到strType.buff
。请注意,您必须先将内存分配给strType.str
,然后才能将字符串复制到其中。
答案 2 :(得分:-2)
您需要像这样初始化结构:
struct strType sType[3] = { {"String1", " "},{"String2", ""},{"string3", " "} };
然后你可以使用strcpy作为Jon提到的字符串