#include <lcio.h> size_t afwrite(const void *ptr, size_t size, size_t count, FILE *f);
afwrite
writes items to the stream associated with the FILE
object addressed by f
and then forces a record break. size
defines the size of each item, count
defines the number of items to
be written, and ptr
addresses the area containing the items. If all
the items do not fit into the current record, a diagnostic message is
generated, and the file's error flag is set.
Calls to afwrite
to write items of type typeval
commonly have
this form:
typeval buf[count]; afwrite(buf, sizeof(typeval), count, f);
afwrite
is supported only for binary streams. See
Augmented Standard I/O for more information.
afwrite
returns the number of items written. If there are too many
items, only those that fit are written.
afwrite
behaves exactly
like fwrite
because such a file is processed as a continuous stream of
characters without record boundaries. To process a file with relative
attributes on a record-by-record basis, you must open it with afopen
and specify the "seq"
access method.
If you call afwrite
with a size or count of 0, nothing is written. You
must use the afwrite0
function to write a zero-length record.
afwrite
never writes more than a single record; it is an error if
there is no room in the current record for all items.
The return value from afwrite
does not indicate whether the call is
completely successful. You can use the ferror
function to determine
whether an error occurs.
fputs
,
fwrite
, and afwrite
. This example illustrates the different ways that
these functions handle new lines and record boundaries:
#include <lcio.h> #include <stdlib.h> main() { FILE *f1, *f2, *f3; char *strings[] = { "anb", "anbnc", "anbncnd", "anbncndne", "anbncndnenf" }; int i; /* Open for text when we use fputs. */ f1 = afopen("cms:fputs output", "w", "", "recfm=v,reclen=20"); f2 = afopen("cms:fwrite output", "wb", "", "recfm=v,reclen=20"); /* Open for binary when we use fwrite or afwrite. */ f3 = afopen("cms:afwrite output", "wb", "", "recfm=v,reclen=20"); if (!f1 || !f2 || !f3){ puts("File(s) failed to open."); exit(EXIT_FAILURE); } for (i = 0; i < sizeof(strings)/sizeof(strings[0]); ++i){ fputs(strings[i], f1); fwrite(strings[i], strlen(strings[i]), 1, f2); afwrite(strings[i], strlen(strings[i]), 1, f3); } fclose(f1); fclose(f2); fclose(f3); puts("Compare output files: FPUTS OUTPUT, FWRITE OUTPUT and " "AFWRITE OUTPUT."); exit(EXIT_SUCCESS); }
afwrite0
, afwriteh
, kinsert
, kreplace
, fputs
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.