[英]How to access elements from an array of structure
我有:
struct strType{
char *str1;
char buff[128];
};
struct strType sType[3] = {
"String1", "",
"String2", "",
"string3" ""
};
如何将字符串分配给 buff? 我的要求是我需要两个并行字符串,一个是预定义的,另一个是在运行时决定的。 我正在考虑使用结构数组。 但无法使用它们。
使用sType[index].buff
访问数组中struct strType
实例的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));
我假设您正在寻找首先初始化一个结构数组。 在这种情况下,您的代码应如下所示:
struct strType{
char *str1;
char buff[128];
};
struct strType sType[3] = {
{ NULL, "String1" },
{ NULL, "String2" },
{ NULL, "string3" }
};
然后,您可以使用乔恩的答案中的strncpy将字符串复制到strType.buff
。 请注意,您必须先将 memory 分配给strType.str
,然后才能将字符串复制到其中。
您需要像这样初始化结构:
struct strType sType[3] = { {"String1", " "},{"String2", ""},{"string3", " "} };
然后你可以像 Jon 提到的那样使用 strcpy,一旦你有了你的字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.