【问题标题】:How can I initialize a string array in C?如何在 C 中初始化字符串数组?
【发布时间】:2017-04-10 07:39:44
【问题描述】:

如果我有char arr[10][2];

如何初始化它?有多少种方法,哪一种最好?

char arr[10][2] = {""};这是正确的吗?

【问题讨论】:

标签: c arrays string initialization initializer-list


【解决方案1】:

你可以这样初始化它:

char arr[10][2] = {
    {"H"},
    {"A"},
    {"C"},
    ....
    //and so on at most 10
};

【讨论】:

    【解决方案2】:

    这里是一些如何在 C 中初始化字符数组的示例。您可以对数组的任何元素使用所示初始化的任意组合

    #include <stdio.h>
    
    int main(void) 
    {
        char arr1[10][2] = { "A" };
        char arr2[10][2] = { { "A" } };
        char arr3[10][2] = { { "AB" } };
        char arr4[10][2] = { { 'A', '\0' } };
        char arr5[10][2] = { { 'A', 'B' } };
        char arr6[10][2] = { [0] = "A" };
        char arr7[10][2] = { [0] = "AB" };
        char arr8[10][2] = { [0] = { "AB" } };
        char arr9[10][2] = { [0] = { [0] = 'A', [1] = '\0' } };
        char arr10[10][2] = { [0] = { [0] = 'A', [1] = 'B' } };
    
    
        // to avoid diagnostic messages of unused variables
        ( void )arr1;
        ( void )arr2;
        ( void )arr3;
        ( void )arr4;
        ( void )arr5;
        ( void )arr6;
        ( void )arr7;
        ( void )arr8;
        ( void )arr9;
        ( void )arr10;
    
        return 0;
    }
    

    你也可以使用像这样的初始化

        char arr1[10][2] = { "" };
        char arr1[10][2] = { '\0' };
    

    你不能在 C 中使用这样的初始化

        char arr1[10][2] = {};
    

    这在 C++ 中是允许的。

    【讨论】:

      【解决方案3】:

      要将所有字符串初始化为空字符串,请使用:

      char arr[10][2] = {0};
      

      如果您需要将它们初始化为不同的值,显然您必须使用这些值。

      【讨论】:

        猜你喜欢
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        相关资源
        最近更新 更多