Complete.Org: Mailing Lists: Archives: discussion: March 2000:
[aclug-L] Re: Weekly C quiz
Home

[aclug-L] Re: Weekly C quiz

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: discussion@xxxxxxxxx
Subject: [aclug-L] Re: Weekly C quiz
From: Tom Hull <thull@xxxxxxxxxxx>
Date: Sat, 11 Mar 2000 00:42:09 -0600
Reply-to: discussion@xxxxxxxxx

Larry Bottorff wrote:
> 
> Here's the next installment of Larry's Weekly C Quiz. This week we're
> looking at buffer overruns. Here's some code:
> 
> #define MAX_BUF 201
> ...
> char buffer[MAX_BUF];
> FILE *file_in;
> ...
> while (fgets(buffer, sizeof(buffer), file_in) != NULL) {
> ....
> }
> 
> If fgets returns a line from file_in's file bigger than MAX_BUF, buffer
> is full at the maximun size, the rest not going into buffer: good. But
> then the next fgets seems to fill buffer with the leftover from the
> input file's last line. How can I "flush" fgets so a longer line's
> leftover doesn't show up in the next fgets?

Just write your own loop. Note that fgetc() is a macro, so there's no
system call overhead in your loop, so it should run as fast as fgets().

> Larry
> 
> -- This is the discussion@xxxxxxxxx list.  To unsubscribe,
> visit http://tmp2.complete.org/cgi-bin/listargate-aclug.cgi

-- 
/*
 *  Tom Hull * thull@xxxxxxxxxxx * http://www.ocston.org/~thull/
 */

-- This is the discussion@xxxxxxxxx list.  To unsubscribe,
visit http://tmp2.complete.org/cgi-bin/listargate-aclug.cgi


[Prev in Thread] Current Thread [Next in Thread]