Initializing arrays of char
Andy DeFaria
defaria at hpclapd.HP.COM
Sat Oct 6 02:49:29 AEST 1990
>/ hpclapd:comp.lang.c / poser at csli.Stanford.EDU (Bill Poser) / 6:16 pm Oct 4, 1990 /
>Regarding the assignment of "12345" to char x[5] and struct{char x[5]},
>I spoke too soon. K&R2 contains a detail I hadn't noticed, and am not
>sure that I approve of. On p.219, in the discussion of initialization
>of fixed size arrays by string constants, it states:
>
> ...the number of characters in the string, NOT COUNTING
> THE TERMINATING NULL CHARACTER, must not exceed the
> size of the array. [emphasis mine]
>
>This means that the assignment of "12345" to an array of five characters,
>is legal. If K&R2 here reflects the standard, then both initializations
>are legitimate.
>
>This seems to me to be a bad idea. Everywhere else, one has to take
>into account the terminating null. For example, x[5] = 'a' is
>an error. Not counting the terminating null here is inconsistent.
>Can anyone explain this decision?
>----------
It seems to me (and I am be no stretch of the imagination a C expert) that
K&R C is saying "Sure you can use all 5 characters for a legitimate string.
You can manipulate them any way you want. You might be using it to contain
a fixed length string of 5 characters. But don't you ever try to use it
with any string procedures (strlen, or even printf's %s operator) or expect
to get burned!"
More information about the Comp.lang.c
mailing list