Initializing arrays of char

Bill Poser poser at csli.Stanford.EDU
Fri Oct 5 11:16:07 AEST 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?



More information about the Comp.lang.c mailing list