214 lines
3.9 KiB
Plaintext
214 lines
3.9 KiB
Plaintext
|
.TH FGETC 2
|
||
|
.SH NAME
|
||
|
fgetc, getc, getchar, fputc, putc, putchar, ungetc, fgets, gets, fputs, puts, fread, fwrite \- Stdio input and output
|
||
|
.SH SYNOPSIS
|
||
|
.B #include <u.h>
|
||
|
.br
|
||
|
.B #include <stdio.h>
|
||
|
.ta \w'\fLlong 'u
|
||
|
.PP
|
||
|
.B
|
||
|
int fgetc(FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
int getc(FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
int getchar(void)
|
||
|
.PP
|
||
|
.B
|
||
|
int fputc(int c, FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
int putc(int c, FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
int putchar(int c)
|
||
|
.PP
|
||
|
.B
|
||
|
int ungetc(int c, FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
char *fgets(char *s, int n, FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
char *gets(char *s)
|
||
|
.PP
|
||
|
.B
|
||
|
int fputs(char *s, FILE *f)
|
||
|
.PP
|
||
|
.B
|
||
|
int puts(char *s)
|
||
|
.PP
|
||
|
.B
|
||
|
long fread(void *ptr, long itemsize, long nitems, FILE *stream)
|
||
|
.PP
|
||
|
.B
|
||
|
long fwrite(void *ptr, long itemsize, long nitems, FILE *stream)
|
||
|
.SH DESCRIPTION
|
||
|
The functions described here work on open Stdio streams (see
|
||
|
.IR fopen ).
|
||
|
.PP
|
||
|
.I Fgetc
|
||
|
returns as an
|
||
|
.B int
|
||
|
the next
|
||
|
.B unsigned
|
||
|
.B char
|
||
|
from input stream
|
||
|
.IR f .
|
||
|
If the stream is at end-of-file, the end-of-file indicator for the
|
||
|
stream is set and
|
||
|
.I fgetc
|
||
|
returns
|
||
|
.BR EOF .
|
||
|
If a read error occurs, the error indicator for the stream is set and
|
||
|
.I fgetc
|
||
|
returns
|
||
|
.BR EOF .
|
||
|
.I Getc
|
||
|
is like
|
||
|
.I fgetc
|
||
|
except that it is implemented as a macro.
|
||
|
.I Getchar
|
||
|
is like
|
||
|
.I getc
|
||
|
except that it always reads from
|
||
|
.BR stdin .
|
||
|
.PP
|
||
|
.I Ungetc
|
||
|
pushes character
|
||
|
.I c
|
||
|
back onto the input stream
|
||
|
.BR f .
|
||
|
The pushed-back character will be returned by subsequent reads in
|
||
|
the reverse order of their pushing.
|
||
|
A successful intervening
|
||
|
.IR fseek ,
|
||
|
.IR fsetpos ,
|
||
|
or
|
||
|
.I rewind
|
||
|
on
|
||
|
.I f
|
||
|
discards any pushed-back characters for
|
||
|
.IR f .
|
||
|
One character of push-back is guaranteed.
|
||
|
.I Ungetc
|
||
|
returns the character pushed back (converted to
|
||
|
.B unsigned
|
||
|
.BR char ),
|
||
|
or
|
||
|
.B EOF
|
||
|
if the operation fails.
|
||
|
A successful call to
|
||
|
.I ungetc
|
||
|
clears the end-of-file indicator for the stream.
|
||
|
The file position indicator for the stream after reading or discarding
|
||
|
all pushed-back characters is the same as it was before the
|
||
|
characters were pushed back.
|
||
|
.PP
|
||
|
.I Fputc
|
||
|
writes character
|
||
|
.I c
|
||
|
(converted to
|
||
|
.B unsigned
|
||
|
.BR char )
|
||
|
to output stream
|
||
|
.IR f
|
||
|
at the position indicated by the position indicator for the stream
|
||
|
and advances the indicator appropriately.
|
||
|
If the file cannot support positioning requests, or if the stream was
|
||
|
opened with append mode, the character is appended to the output stream.
|
||
|
.I Fputc
|
||
|
returns the character written or
|
||
|
.B EOF
|
||
|
if there was a write error.
|
||
|
.I Putc
|
||
|
is like
|
||
|
.IR fputc
|
||
|
but is implemented as a macro.
|
||
|
.I Putchar
|
||
|
is like
|
||
|
.I putc
|
||
|
except that it always writes to
|
||
|
.BR stdout .
|
||
|
.PP
|
||
|
All other input takes place as if characters were read by successive
|
||
|
calls to
|
||
|
.I fgetc
|
||
|
and all other output takes place as if characters were written by
|
||
|
successive calls to
|
||
|
.IR fputc .
|
||
|
.PP
|
||
|
.I Fgets
|
||
|
reads up to and including the next newline, but not past end-of-file
|
||
|
or more than
|
||
|
.IR n -1
|
||
|
characters, from stream
|
||
|
.I f
|
||
|
into array
|
||
|
.IR s .
|
||
|
A null character is written immediately after the last character read
|
||
|
into the array (if any characters are read at all).
|
||
|
.I Fgets
|
||
|
returns
|
||
|
.I s
|
||
|
if successful, otherwise a null pointer.
|
||
|
.I Gets
|
||
|
is similar to
|
||
|
.IR fgets
|
||
|
except that it always reads from
|
||
|
.B stdin
|
||
|
and it discards the terminating newline, if any.
|
||
|
.I Gets
|
||
|
does not check for overflow of the receiving array, so its use is deprecated.
|
||
|
.PP
|
||
|
.I Fputs
|
||
|
writes the string
|
||
|
.I s
|
||
|
to stream
|
||
|
.IR f ,
|
||
|
returning
|
||
|
.B EOF
|
||
|
if a write error occurred, otherwise a nonnegative value.
|
||
|
The terminating null character is not written.
|
||
|
.I Puts
|
||
|
is the same, writing to
|
||
|
.BR stdout .
|
||
|
.PP
|
||
|
.I Fread
|
||
|
reads from the named input
|
||
|
.IR stream
|
||
|
at most
|
||
|
.I nitems
|
||
|
of data of size
|
||
|
.I itemsize
|
||
|
and the type of
|
||
|
.I *ptr
|
||
|
into a block beginning at
|
||
|
.IR ptr .
|
||
|
It returns the number of items actually read.
|
||
|
.PP
|
||
|
.I Fwrite
|
||
|
appends to the named output
|
||
|
.I stream
|
||
|
at most
|
||
|
.I nitems
|
||
|
of data of size
|
||
|
.I itemsize
|
||
|
and the type of
|
||
|
.I *ptr
|
||
|
from a block beginning at
|
||
|
.IR ptr .
|
||
|
It returns the number of items actually written.
|
||
|
.SH SOURCE
|
||
|
.B /sys/src/libstdio
|
||
|
.SH "SEE ALSO"
|
||
|
.IR read (2),
|
||
|
.IR fopen (2),
|
||
|
.IR bio (2)
|
||
|
.SH BUGS
|
||
|
Stdio does not handle
|
||
|
.SM UTF
|
||
|
or runes; use Bio instead.
|