结构char数组用法

时间:2013-05-13 16:58:11

标签: c char structure

我有一个问题,了解这是如何工作的:

struct main_s {
   char test[1];
};

是二维数组测试[1] [x]吗? 例如,如何传递字符串" Hello World"到了结构领域?

char array [1] [11] = {{" H"," e"," l"," l", " O"" "" W"" O"" R"" L"" d"} };

和main_s-> test =数组不起作用,编译器提供有关类型的错误,1是char []和另一个char *。

3 个答案:

答案 0 :(得分:1)

  

如何将字符串“Hello World”传递给结构字段?

首先要为test数组声明足够的内存空间以包含所需的字符串。 "Hello World"包含11个字符。所以你的数组应该包含至少12个元素

struct main_s {
   char test[12];
};

然后将您的字符串复制到数组中:

struct main_s m;
strcpy(m.test, "Hello World");
printf("%s\n", m.test) // this display the content of your char array as string

如果要声明2D数组:

struct main_s {
   char test[3][13];
}

struct main_s m;
strcpy(m.test[0], "Hello World0");
strcpy(m.test[1], "Hello World1");
strcpy(m.test[2], "Hello World2");
printf("%s\n%s\n%s\n", m.test[0], m.test[1], m.test[2]);

strcpy(m.test[1], "Hello World1");

相当于:

m.test[1][0]='H';
m.test[1][1]='e';
m.test[1][2]='l';
.
.
m.test[1][10]='d';
m.test[1][11]='1';
m.test[1][12]='\0'; //add null charachter at the end. it's mandatory for strings

不允许使用上述代码

m.test[1] = "Hello World1";
m.test[1] = {'H','e','l','l','o',' ','W','o','r','l','d','1'};

答案 1 :(得分:0)

您无法将字符串"Hello world"传递给此数组。它是一个char变量。

char test[1];char test;类似。

按如下所示更改结构以存储地址

struct main_s {    char * test; };

现在,以下代码将起作用。

char array[1][11] = { {"H","e","l","l","o"," ","W","o","r","l","d"} };

struct main_s var;
var->test = array;

答案 2 :(得分:0)

您的char数组是一个大小为1的数组,因此您只能在其中放入一个char。如果你想将Hello World传递给这个结构,它将是这样的:

 struct main_s{
    char * test;

 };

 int main(){
    struct main_s a;
    a.test = malloc(sizeof(n)) //Where n is the size you want so how ever many chars hello world is followed by null
    memcpy(a, "Hello World\0")
  }

这基本上是它的工作原理。您需要将Hello World \ 0复制到分配给hte指针的内存中。