On Mon, 13 Oct 1997, Cris Jacobin wrote:
> I'm having some trouble with the folloing function, and would
> appreciate some assistance with it.
> fread(&u_cnt, sizeof (long), 1, uc_fp);
You have just opened the file. the above will read sizeof(long) bytes from
position 0.
> fwrite(&u_cnt, sizeof (long), 1, uc_fp);
You then write those 4 bytes - to position 4-7 in the file.
Better than this, use a text file, and read in the count of players only
once, at bootup, and write it whenever it changes:
#define PLAYER_COUNT_FILE "../data/player_count"
int total_player_count;
void init_player_count() /* called at boot up */
{
FILE *fp;
if ((fp = fopen (PLAYER_COUNT_FILE, "r")))
{
total_player_count = fread_number(fp);
fclose(fp);
}
}
void increase_player_count() /* Called whenever a new player enters the game */
{
FILE *fp;
if ((fp = fopen (PLAYER_COUNT_FILE, "w")))
{
fprintf(fp, "%d\n", ++total_player_count);
fclose(fp);
}
else
bugf ("increase_player_count:%m");
}
I assume Circle has fread_number(). Your bug reporting procedue may vary:
the %m parameter means "insert string corresponding to current error
number here".
Using a text file you can see what the count is without doing hex
arithmethics, and it is portable across platforms too if you ever have to
move sites.
PS: The "b" crud in filemodes is only necessary if you want to be
compatible with DOS; it tells the stdio library not to write \n as \r\n
or something silly like that. Under UNIX, all files are binary.
=============================================================================
Erwin Andreasen Herlev, Denmark <erwin@pip.dknet.dk> UNIX System Programmer
<URL:http://pip.dknet.dk/~erwin/> <*> (not speaking for) DDE
=============================================================================
+------------------------------------------------------------+
| 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/08/00 PST