Jam Jam - 14 days ago 4
C Question

How can I initialize string array in c?

If I have

char arr[10][2]
;

How can I initialize it? How many ways and which one is the best way?

char arr[10][2] = {""};
Is this correct?

Answer

Here is some examples of how character arrays can be initialized in C. You may use any combinations of the showed initializations for any element of the array

#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;
}

Also you can use initializations like these

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

You may not use in C an initialization like this

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

that is allowed in C++.