📄 stdio.h
字号:
#pragma force_top_level
#pragma include_only_once
/* stdio.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.9 */
/* Copyright (C) Codemist Ltd., 1988-1993 */
/* Copyright (C) Advanced Risc Machines Ltd., 1991-1998 - */
/* All rights reserved */
/*
* RCS $Revision: 1.6 $
* Checkin $Date: 1998/05/19 09:54:37 $
* Revising $Author: wdijkstr $
*/
/*
* stdio.h declares two types, several macros, and many functions for
* performing input and output. For a discussion on Streams and Files
* refer to sections 4.9.2 and 4.9.3 in the above ANSI draft, or to a
* modern textbook on C.
*/
#ifndef __stdio_h
#define __stdio_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __size_t
#define __size_t 1
typedef unsigned int size_t; /* from <stddef.h> */
#endif
/* ANSI forbids va_list to be defined here */
typedef char *__va_list[1]; /* keep in step with <stdarg.h> */
#ifndef NULL
# define NULL 0 /* see <stddef.h> */
#endif
typedef struct __fpos_t_struct
{ unsigned long __lo; /* add hi one day */
} fpos_t;
/*
* fpos_t is an object capable of recording all information needed to
* specify uniquely every position within a file.
*/
typedef struct __FILE FILE;
/*
* FILE is an object capable of recording all information needed to control
* a stream, such as its file position indicator, a pointer to its
* associated buffer, an error indicator that records whether a read/write
* error has occurred and an end-of-file indicator that records whether the
* end-of-file has been reached.
* Its structure is not made known to library clients.
*/
#define _IOFBF 0x100 /* fully buffered IO */
#define _IOLBF 0x200 /* line buffered IO */
#define _IONBF 0x400 /* unbuffered IO */
/* Various default file IO buffer sizes */
#define BUFSIZ (512) /* system buffer size (as used by setbuf) */
#define STDIN_BUFSIZ (64) /* default stdin buffer size */
#define STDOUT_BUFSIZ (64) /* default stdout buffer size */
#define STDERR_BUFSIZ (16) /* default stderr buffer size */
#define EOF (-1)
/*
* negative integral constant, indicates end-of-file, that is, no more input
* from a stream.
*/
/* It is not clear to me what value FOPEN_MAX should have, so I will
err in the cautious direction - ANSI requires it to be at least 8 */
#define FOPEN_MAX 8 /* check re arthur/unix/mvs */
/*
* an integral constant expression that is the minimum number of files that
* this implementation guarantees can be open simultaneously.
*/
/* _SYS_OPEN defines a limit on the number of open files that is imposed
by this C library */
#define _SYS_OPEN 16
#define FILENAME_MAX 80
/*
* an integral constant expression that is the size of an array of char
* large enough to hold the longest filename string
*/
#define L_tmpnam FILENAME_MAX
/*
* an integral constant expression that is the size of an array of char
* large enough to hold a temporary file name string generated by the
* tmpnam function.
*/
#define SEEK_SET 0 /* start of stream (see fseek) */
#define SEEK_CUR 1 /* current position in stream (see fseek) */
#define SEEK_END 2 /* end of stream (see fseek) */
#define TMP_MAX 256
/*
* an integral constant expression that is the minimum number of unique
* file names that shall be generated by the tmpnam function.
*/
extern FILE __stdin, __stdout, __stderr;
#define stdin (&__stdin)
/* pointer to a FILE object associated with standard input stream */
#define stdout (&__stdout)
/* pointer to a FILE object associated with standard output stream */
#define stderr (&__stderr)
/* pointer to a FILE object associated with standard error stream */
extern int remove(const char * /*filename*/);
/*
* causes the file whose name is the string pointed to by filename to be
* removed. Subsequent attempts to open the file will fail, unless it is
* created anew. If the file is open, the behaviour of the remove function
* is implementation-defined (under RISCOS/Arthur/Brazil the operation
* fails).
* Returns: zero if the operation succeeds, nonzero if it fails.
*/
extern int rename(const char * /*old*/, const char * /*new*/);
/*
* causes the file whose name is the string pointed to by old to be
* henceforth known by the name given by the string pointed to by new. The
* file named old is effectively removed. If a file named by the string
* pointed to by new exists prior to the call of the rename function, the
* behaviour is implementation-defined (under RISCOS/Arthur/Brazil, the
* operation fails).
* Returns: zero if the operation succeeds, nonzero if it fails, in which
* case if the file existed previously it is still known by its
* original name.
*/
extern FILE *tmpfile(void);
/*
* creates a temporary binary file that will be automatically removed when
* it is closed or at program termination. The file is opened for update.
* Returns: a pointer to the stream of the file that it created. If the file
* cannot be created, a null pointer is returned.
*/
extern char *tmpnam(char * /*s*/);
/*
* generates a string that is not the same as the name of an existing file.
* The tmpnam function generates a different string each time it is called,
* up to TMP_MAX times. If it is called more than TMP_MAX times, the
* behaviour is implementation-defined (under RISCOS/Arthur/Brazil the
* algorithm for the name generation works just as well after tmpnam has
* been called more than TMP_MAX times as before; a name clash is impossible
* in any single half year period).
* Returns: If the argument is a null pointer, the tmpnam function leaves
* its result in an internal static object and returns a pointer to
* that object. Subsequent calls to the tmpnam function may modify
* the same object. if the argument is not a null pointer, it is
* assumed to point to an array of at least L_tmpnam characters;
* the tmpnam function writes its result in that array and returns
* the argument as its value.
*/
extern int fclose(FILE * /*stream*/);
/*
* causes the stream pointed to by stream to be flushed and the associated
* file to be closed. Any unwritten buffered data for the stream are
* delivered to the host environment to be written to the file; any unread
* buffered data are discarded. The stream is disassociated from the file.
* If the associated buffer was automatically allocated, it is deallocated.
* Returns: zero if the stream was succesfully closed, or nonzero if any
* errors were detected or if the stream was already closed.
*/
extern int fflush(FILE * /*stream*/);
/*
* If the stream points to an output or update stream in which the most
* recent operation was output, the fflush function causes any unwritten
* data for that stream to be delivered to the host environment to be
* written to the file. If the stream points to an input or update stream,
* the fflush function undoes the effect of any preceding ungetc operation
* on the stream.
* Returns: nonzero if a write error occurs.
*/
extern FILE *fopen(const char * /*filename*/, const char * /*mode*/);
/*
* opens the file whose name is the string pointed to by filename, and
* associates a stream with it.
* The argument mode points to a string beginning with one of the following
* sequences:
* "r" open text file for reading
* "w" create text file for writing, or truncate to zero length
* "a" append; open text file or create for writing at eof
* "rb" open binary file for reading
* "wb" create binary file for writing, or truncate to zero length
* "ab" append; open binary file or create for writing at eof
* "r+" open text file for update (reading and writing)
* "w+" create text file for update, or truncate to zero length
* "a+" append; open text file or create for update, writing at eof
* "r+b"/"rb+" open binary file for update (reading and writing)
* "w+b"/"wb+" create binary file for update, or truncate to zero length
* "a+b"/"ab+" append; open binary file or create for update, writing at eof
*
* Opening a file with read mode ('r' as the first character in the mode
* argument) fails if the file does not exist or cannot be read.
* Opening a file with append mode ('a' as the first character in the mode
* argument) causes all subsequent writes to be forced to the current end of
* file, regardless of intervening calls to the fseek function. In some
* implementations, opening a binary file with append mode ('b' as the
* second or third character in the mode argument) may initially position
* the file position indicator beyond the last data written, because of the
* NUL padding (but not under RISCOS/Arthur/Brazil).
* When a file is opened with update mode ('+' as the second or third
* character in the mode argument), both input and output may be performed
* on the associated stream. However, output may not be directly followed by
* input without an intervening call to the fflush fuction or to a file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -