On Fri, 9 Nov 2001, Pj Bean wrote:
>Four infractions:
>>
>>1) Global variable will be for _everybody_, not just one person. You want
> the pointer in 'struct char_data' or 'struct descriptor_data'.
>>
>*cough* umm not exactly, He wants to define one GLOBAL whomessage for
>Everyone,
>He has it right Just he needs to use
>char whomessage;
>or
>char whomessage[50];
You're right. I took:
... "&R[&r%s&R]&n\n", *whomessage);
to be for everybody due to the "[]" syntax.
>>2) You want 'whomessage', not '*whomessage'. You're assigning a pointer,
> not writing to what the pointer goes to.
>>
>Hes right on this one ...but he doesnt explain this quite well,
Pointers were the hardest part I had with C. But that's probably because I
was determined enough to do it without any sort of formal training. Just
the CircleMUD source code, the 'man' pages, and a compiler. Those manual
pages are worth gold when you're unfamiliar with functions. Took a long
time to be fluent though. Memory corruption was a rude surprise too.
I'm also rather happy Jeremy didn't follow the GNU coding style and stuck
with K&R. :)
Don't try C before you know what's going on. Most people can't just dive
in to the language. I already had 6+ years of QuickBASIC [1] programming
by then anyway. So I had functions, structures, switches, block if, and
everything necessary to adapt to C, except pointers. A friend of mine who
wrote QuickBASIC code for 4 or so years (so he had at least some
programming experience) just couldn't handle C++ at all during the college
classes.
>>3) You need to allocate memory for that string. 'arg' is a magical global
> buffer that is used for many different functions.
>>
>I've never had to ...but use buf instead, its usually already sizable enough
>for it.
If he intends to just:
whomessage = arg;
then he'll have problems whenever something writes to one of the public
buffers[2]. Any time someone casts a spell in fact, because it eats all 4
buffers. ('arg' for targeting, 'buf*' for say_spelll)
Personally, I'd use either file_to_string_alloc() or the line editor to
write the messages. That way you get more than one line and some minimal
formatting.
--
George Greer
greerga@circlemud.org
1: 1988. I probably don't have the original floppy disks, not that I could
read 5 1/4 inch disks now anyway. Still have a copy of it on 3 1/2 inch
disks with some of my old programs though... Hrmm.
2: Don't forget: arg, buf, buf1, and buf2 all die in '02.
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST