In this definition
char a[' '];
character literal ' ' is promoted to int and its value is used as the size of the array. For example in ASCII the value of ' ' is equal to 32. So this is equivalent to
char a[32];
Take into account that in EBCDIC the value of character literal ' ' is not equal to 32 and if I am not mistaken it is equal to 64.
So depending on selected coding the size of the array will be different.
For ASCII
char a[32];
For EBCDIC
char a[64];