在C语言中,多维字符串数组

3
我想创建一个动态的二维数组,以以下方式存储字符串 -
a[0][0] = "element 1"
a[0][1] = "element 2"

但我不知道如何去做。

关于这个问题,我并没有头绪。

1
可能是C多维字符串数组的重复问题。 - undefined
3个回答

3
创建一个字符串指针数组。你的2D数组中的每个元素将指向该字符串,而不是保存该字符串本身。
快速且简单的示例 :)(实际上应初始化元素)
#include <stdio.h>

int main(void)
{
  char * strs[1][3];   // Define an array of character pointers 1x3

  char *a = "string 1";
  char *b = "string 2";
  char *c = "string 3";

  strs[0][0] = a;
  strs[0][1] = b;
  strs[0][2] = c;

  printf("String in 0 1 is : %s\n", strs[0][1]);
  printf("String in 0 0 is : %s\n", strs[0][0]);
  printf("String in 0 2 is : %s\n", strs[0][2]);

  return 0;
}

2

在C语言中,一个二维字符串数组可以用一个三维字符指针数组来表示。

// allocate space for the "string" pointers 
int size  = height + (height * length);

char*** a = malloc (size * sizeof (char*));

//setup the array
for (i= 0; i< height; i++)
{
    a [i] = a + (height + (length * i));
}

现在,[x][y] 解析为 char *。您可以将字符串文字分配给它,或者分配一个包含动态数据的字符数组。

1
使用这段代码。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char * strs[0][3];   

  strs[0][0] = "string 1";
  strs[0][1] = "string 2";
  strs[0][2] = "string 3";

  printf("String in 0 0 is : %s\n", strs[0][0]);
  printf("String in 0 1 is : %s\n", strs[0][1]);
  printf("String in 0 2 is : %s\n", strs[0][2]);
  system("pause");
  return 0;
}

或者,如果您想要可变数量的行:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char * strs[][3] = {
      {"string 11", "string 12", "string 13"},
      {"string 21", "string 22", "string 23"}
      };  

    printf("String in 0 0 is : %s\n", strs[0][0]);
    printf("String in 0 1 is : %s\n", strs[0][1]);
    printf("String in 0 2 is : %s\n", strs[0][2]);

    printf("String in 1 0 is : %s\n", strs[1][0]);
    printf("String in 1 1 is : %s\n", strs[1][1]);
    printf("String in 1 2 is : %s\n", strs[1][2]);
    system("pause");
    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接