Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: One (silly) question about "C"

Author: Tom Likens

Date: 09:10:21 02/05/02

Go up one level in this thread


On February 05, 2002 at 08:32:35, Antonio Senatore wrote:

>Hi friends:
>
>I have one array A[n] and another B[n] (both of the same dimension) and I want
>to make A = B without using a loop like
>
>for (i=0; i < n; i++) A[i] = B[i];
>
>My question is if is it possible to do that without using none kind of loops
>(and as I am working in C, I can't work with vectors or to use the lib
>"algorithm")
>
>Thanks in advance
>
>Antonio

Here ya go, here's a "simple" way to copy an array :)
Note, from and to are what they imply and count holds the number of
items to copy.

    register int n=(count+7)/8;

    switch(count & 7){
        case 0: do { *to++ = *from++;
        case 7:      *to++ = *from++;
        case 6:      *to++ = *from++;
        case 5:      *to++ = *from++;
        case 4:      *to++ = *from++;
        case 3:      *to++ = *from++;
        case 2:      *to++ = *from++;
        case 1:      *to++ = *from++;
                } while(--n > 0);
    }

This was invented by Tom Duff a number of years back when he was at
Lucas Films.  By the way, just to head off the question before it's
asked, - Yep this is *legal* ANSI C.

enjoy,
--tom

P.S. Or you could just use "memcpy" ;o



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.