TDRD wrote:
> char *king(struct char_data * chh, char *cp, int p)
> {
> char *kingdo;
> kingdo = malloc(50);
Why not just have 'char kingdo[50]' if you're going to set an arbitrary
size?
> bzero(kingdo, strlen(kingdo));
Not sure what bzero does.
> char *kingdo;
>
> sprintf(kingdo, "%s",king(ch,"no Kingdom",TRUE));
> sprintf(buf, "%sYou are a member of %s.\r\n",buf,kingdo);
You're using an uninitialised pointer. You need to either set a certain
amount that 'kingdo' can be (e.g. char kingdo[50]), or malloc it. Don't
you think it would be much more efficient to have an array of string with
the kingdoms, and define each kingdom as a number that matches the slot
in the array and reference it by the define? i.e.
#define KINGDOM_UNDEFINED -1
#define KINGDOM_WHATEVER 0
#define KINGDOM_SOMETHING 1
...
#define MAX_KINGDOMS // Whatever number is greater than the last
// kingdom number.
char *kingdoms[MAX_KINGDOMS] = {
"Something",
"Whatever",
...
"Last kingdom"
};
sprintf(kingdo, "You are a member of the %s kingdom",
kingdoms[GET_KINGDOM(ch)]);
-- end mailer code --
---
Jon Nielsen <nikolai@montana.com>
"To acquire knowledge, one must study; but to
aquire wisdom, one must observe."
-Marilyn vos Savant
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST