C programming hint
Mark Hamilton
mah at asgb.UUCP
Tue Jul 16 06:09:45 AEST 1985
> > I found a way to initialize an array of characters without using a loop.
> > Here is the method I used:
> >
> > char blanks[SIZE]; /* declare array of SIZE elements */
> >
> > blanks[0] = ' '; /* initialize 1st element */
> >
> > strncpy(blanks + 1, blanks, SIZE - 1); /* initialize entire array */
> > ^^^ ^^^ ^^^
> > | | |
> > destination source how many characters to copy
> >
> > The trick is to use strncpy in an almost recursive way.
> > Well, I hope you found this useful.
>
> Unfortunately, strncpy uses the "loop" that you are trying to avoid. It
> also makes a redundant (in this case) check for the null character each time
> through the loop that should be avoided.
One would hope that the compiler (or optimizer) would realize what's
going on here, and do something a little more clever than looping.
Especially since this is a strncpy, so the check for the null character
isn't done. I must admit that I am new to Unix C, but on VMS (and I
beleive TOPS20, for whoever uses that) C, the compiler will turn this
into a MOVC instruction (or a BLT on the '20). These are both the accepted
method for filling a region.
Mark Hamilton
--
The opinions expessed above are -- or maybe they aren't...
Mark Hamilton - Burroughs Advanced Systems Group
Boulder, CO 80301
ihnp4!sdcsvax!bmcg!asgb!mah
More information about the Comp.lang.c
mailing list