【问题标题】:How to store an array of 2 char arrays?如何存储 2 个字符数组的数组?
【发布时间】:2016-02-04 20:27:01
【问题描述】:

我想要一个存储 2 个项目的数组,那么这是最好的方法吗?

char array[5][2]= {{"data1","1"},
                {"data2","2"},
                {"data3","3"},
                {"data4","4"},
                {"data5","5"}};

例如,我如何将某些内容存储在“data2”、“2”中?

【问题讨论】:

  • 我觉得应该是char array[5][2][6] = ...或者const char *array[5][2]
  • @mch 抱歉,阅读速度太快...

标签: c arrays 2d


【解决方案1】:

2D char 数组在这里不起作用,但结构数组会满足您的需要:

    struct string_pairs
    {
        char str1[10];
        char str2[10];
    } array[] = {{"data1","x"},
                {"data2","x"},
                {"data3","x"},
                {"data4","x"},
                {"data5","x"}};

【讨论】:

    【解决方案2】:

    char 的数组

    char arr1[6] = "data1";               // 1D array
    

    char的数组数组

    char arr2[2][6] = { {"data1"},        // 2D array
                        {"1"}      };   
    

    数组数组char的数组

    char arr3[5][2][6] = {{"data1","1"},  // 3D array
                          {"data2","2"},
                          {"data3","3"},
                          {"data4","4"},
                          {"data5","5"}};  
    

    "dataX","X"分配给数组的第二个元素

    strcpy(arr[1][0], "dataX");
    strcpy(arr[1][1], "X");  
    

    【讨论】:

      【解决方案3】:

      您可以将其设为 2d char* 数组

      char *array[5][2]= {{"data1","1"},
                         {"data2","2"},
                         {"data3","3"},
                         {"data4","4"},
                         {"data5","5"}};
      

      然后要更改字符串数据,您可以直接访问各个组件(编辑{"data2","2"}):

      array[1][0] = "words", array[1][1] = "a";
      

      基本上,当您使用第一组方括号array[1] 时,即访问{"data2","2"} 行,然后使用第二组方括号,您将访问行内的组件。所以,array[1][0] 最初是 "data2"array[1][1] 最初是 "2"。就像array[2][0] 将是"data3"array[2][1] 将是"3"

      【讨论】:

        【解决方案4】:

        我认为这是结构的典型任务。 在我看来,这应该可行:

        struct strings  // definition of a struct calld strings
        {
        char[] a;
        char[] b;
        }
        
        struct strings arrayofstrings[n];  // instancing an array of structs
        
        arrayofstrings[i].a = {"data"};  // reference to the element "a" of the i-part of the array
        arrayofstrings[i].b = {"1"};
        

        你可以创建 n 个结构体“字符串”的实例

        【讨论】:

        • char[] a; 不会编译。你的意思是char a[10];arrayofstrings[i].a = {"data"}; 也不行。
        • 你是对的,"{" "}" 不是必需的,但是为什么编译器需要一个常量来表示 char[] a?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        相关资源
        最近更新 更多