charles@c3pe.UUCP (Charles Green) (08/22/89)
Well, replies stopped trickling in a few (?) weeks ago, and I finally found the
time to post a summary, so here it is:
25 people replied to my posting. Fourteen said the "correct" thing is (char*)
to a separate string in my structure rather than a char[] array; a couple of
people explained that they aren't the same thing (which I already knew, but
thanks anyway). The reason I'd considered and discarded this approach was the
overhead of carrying around an extra (char*) [space] and two malloc() calls
rather than one [time], although two of these 14 people pointed out that I
could at least allocate the required space with a single malloc() call and set
the (char*) to point just beyond my structure to the string data space, which I
hadn't thought of.
Nine people said I should declare char[1], which is ultimately what I wound up
doing. In the case of "K&R" (null-terminated) strings, this actually makes the
malloc() size calculation easier, as it "automagically" takes care of the
terminating null. Three of the 9 folks who recommended the char[1] solution
pointed out that the GNU C compiler *does* allow char[0] declarations for the
very purpose I was trying to use it{, for}.
And two people mentioned "counted" strings/arrays (a la Whitesmiths C?)...
Thanks again, Charles Green
--
{decuac.dec.com,cucstud,sundc}!c3pe!charles ex::!echo Boo: