如何从结构数组中访问元素

时间:2011-06-28 14:27:21

标签: c

我有:

struct strType{
     char *str1;
     char buff[128];  
    };

struct strType sType[3] = {
                            "String1", "",
                            "String2", "",
                            "string3" ""  
                           };

如何将字符串分配给buff? 我的要求是我需要两个并行的字符串,一个是预定义的,另一个是运行时决定的。我正在考虑使用结构数组。但不能使用它们。

3 个答案:

答案 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提到的字符串