Okay, here's a plea for help.

Goal: To print the players' clan division, if applicable, out using sprintf.

struct clan_type
{
    ...
    char        *division_one_name;
    char        *division_two_name;
    ...
};

That's how the divisions are laid out in the struct.  'ch' has a
clandivision field added to it--0 = not in a division, 1 = division 1, 2 =
division 2.  Question 1: Is there a better way of accomplishing this?  This
system isn't very flexible.  However, this isn't the relatively important
question; that one follows:

Here's where I'm running into problems:

char *divbuf[MAX_STRING_LENGTH];
...

    if (ch->clandivision > 0 && ch->clandivision < 3)
    {
       if (ch->clandivision == 1)
          divbuf = clan_table[ch->clan].division_one_name; (line 1202)
       else
          divbuf = clan_table[ch->clan].division_two_name; (line 1204)
    }
...

act_comm.c:1202: incompatible types in assignment
act_comm.c:1204: incompatible types in assignment

Originally, I had divbuf not be a pointer, but that also failed.  What I'm
trying to do is to copy the name of the division to a buffer, which will be
printed as part of the following sprintf:
                                      \/
   sprintf(buf, "%s [(%d) %s] %s: '%s'",
      clan_table[ch->clan].who_name, ch->clanrank, divbuf, ch->name,
argument);

Should I just change the struct definition of *division_one_name and
*division_two_name to not be pointers?  I need not really even need to copy
the name to a buffer, I suppose I could instead have three different
sprintfs for each situation ('clan_table[ch->clan].division_one_name,
two_name, or none), but that doesn't help me in figuring out pointers and C
in the long run.

I'm sure the optimal solution is relatively easy, but I just can't see it
(like all newbie programmers, pointers are like a programming language in
and of their own to me).

I appreciate your help.

Thanks,
Jeremy Hill



Reply via email to