Home
Highly Reusable Software By activity User Interface Text Strings Math Processing
Stored Data
Communications
Hard World File System
|
#License - #Source code - #Example Use -
#include <librock/target/types.c> #include <librock/astring.h> char *librock_afgets( char * *ppasz, FILE *f );
librock_afgets will read characters from FILE f until reach EOF, \0, or \n. All characters plus the \n (if it appeared) and a NUL terminator are stored into a (re)alloced buffer obtained by calling librock_astrensure() Note: To preserve \0 in the stream, see librock_afgettoch() instead.
The return value is also stored at *ppasz.
These functions are part of the Librock allocated string functions. See () for an overview. Since the librock allocated string buffers hold NUL terminated strings, most "read-only" string functions of libc and other libraries, such as strlen(), strchr(), can be used.
As with all librock_astr* functions, the caller must assume the buffer
will move, and consider all pointers into the old buffer *ppasz
unusable.
See the () implementation for a good way to use indexes
to avoid pointers which go stale.
The allocation function, librock_astrensure(), makes realloc requests in multiples of a fixed size. The primary benefit of this strategy is to reduce realloc calls by assuming the buffer is at least a minimum size. For this and other reasons, be sure to call only with *ppasz set to 0 or a value obtained from a previous call to one of these functions.
Typical Use:#ifdef librock_TYPICAL_USE_afgets char *asz =0; /* Be sure to initialize to 0 */ while(librock_afgets(&asz,f)) { /* Process line Here */ } /* As long as go through entire loop, no need to astrfree */ #endif
#include <librock/target/types.c> #include <librock/astring.h> char *librock_afgetsX( char * *ppasz, FILE *f, void *(*reallocfn)(void *,size_t) );
fgetc() feof() librock_astrensureX() librock_astrfreeX() realloc() // used by librock_afgets
Copyright 1998-2000 Forrest J. Cavalier III, http://www.mibsoftware.com Open-source under MIT license. NO WARRANTY. Copies must retain this block. License text in <librock/license/mit.txt> librock_LIDESC_HC=cc598307414a9997b32b60a2e7a8e7c6a13d6438
Verbatim copying and distribution of this generated page is permitted in any medium provided that no changes are made.
(The source of this manual page may be covered by a more permissive license which allows modifications.)
Want to help? We welcome comments, patches. -- Need help? Request paid support.