⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdio.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* * pANS stdio.h *//* * According to X3J11, there is only one i/o buffer * and it must not be occupied by both input and output data. *	If rp<wp, we must have state==RD and *	if wp<rp, we must have state==WR, so that getc and putc work correctly. *	On open, rp, wp and buf are set to 0, so first getc or putc will call _IO_getc *	or _IO_putc, which will allocate the buffer. *	If setvbuf(., ., _IONBF, .) is called, bufl is set to 0 and *	buf, rp and wp are pointed at unbuf. *	If setvbuf(., ., _IOLBF, .) is called, _IO_putc leaves wp and rp pointed at the *	end of the buffer so that it can be called on each putc to check whether it's got *	a newline.  This nonsense is in order to avoid impacting performance of the other *	buffering modes more than necessary -- putting the test in putc adds many *	instructions that are wasted in non-_IOLBF mode: *	#define putc(c, f)	(_IO_ctmp=(c),\ *				(f)->wp>=(f)->rp || (f)->flags&LINEBUF && _IO_ctmp=='\n'\ *					?_IO_putc(_IO_ctmp, f)\ *					:*(f)->wp++=_IO_ctmp) *				 */typedef struct{	int fd;		/* UNIX file pointer */	char flags;	/* bits for must free buffer on close, line-buffered */	char state;	/* last operation was read, write, position, error, eof */	char *buf;	/* pointer to i/o buffer */	char *rp;	/* read pointer (or write end-of-buffer) */	char *wp;	/* write pointer (or read end-of-buffer) */	char *lp;	/* actual write pointer used when line-buffering */	long bufl;	/* actual length of buffer */	char unbuf[1];	/* tiny buffer for unbuffered io (used for ungetc?) */}FILE;typedef long fpos_t;#ifndef NULL#define	NULL	0#endif/* * Third arg of setvbuf */#define	_IOFBF	1			/* block-buffered */#define	_IOLBF	2			/* line-buffered */#define	_IONBF	3			/* unbuffered */#define	BUFSIZ	4096			/* size of setbuf buffer */#define	EOF	(-1)			/* returned on end of file */#define	FOPEN_MAX	128		/* max files open */#define	FILENAME_MAX	BUFSIZ		/* silly filename length */#define	L_tmpnam	20		/* sizeof "/tmp/abcdefghij9999 */#define	SEEK_CUR	1#define	SEEK_END	2#define	SEEK_SET	0#define	TMP_MAX		64		/* very hard to set correctly */#define	stderr	(&_IO_stream[2])#define	stdin	(&_IO_stream[0])#define	stdout	(&_IO_stream[1])#define	_IO_CHMASK	0377		/* mask for 8 bit characters */FILE *tmpfile(void);char *tmpnam(char *);int fclose(FILE *);int fflush(FILE *);FILE *fopen(const char *, const char *);FILE *freopen(const char *, const char *, FILE *);void setbuf(FILE *, char *);int setvbuf(FILE *, char *, int, long);int fprintf(FILE *, const char *, ...);int fscanf(FILE *, const char *, ...);int printf(const char *, ...);int scanf(const char *, ...);int sprintf(char *, const char *, ...);int sscanf(const char *, const char *, ...);int vfprintf(FILE *, const char *, va_list);int vprintf(const char *, va_list);int vsprintf(char *, const char *, va_list);int vfscanf(FILE *, const char *, va_list);int fgetc(FILE *);char *fgets(char *, int, FILE *);int fputc(int, FILE *);int fputs(const char *, FILE *);int getc(FILE *);#define	getc(f)	((f)->rp>=(f)->wp?_IO_getc(f):*(f)->rp++&_IO_CHMASK)int _IO_getc(FILE *f);int getchar(void);#define	getchar()	getc(stdin)char *gets(char *);int putc(int, FILE *);#define	putc(c, f) ((f)->wp>=(f)->rp?_IO_putc(c, f):(*(f)->wp++=c)&_IO_CHMASK)int _IO_putc(int, FILE *);int putchar(int);#define	putchar(c)	putc(c, stdout)int puts(const char *);int ungetc(int, FILE *);long fread(void *, long, long, FILE *);long fwrite(const void *, long, long, FILE *);int fgetpos(FILE *, fpos_t *);int fseek(FILE *, long int, int);int fsetpos(FILE *, const fpos_t *);long int ftell(FILE *);void rewind(FILE *);void clearerr(FILE *);int feof(FILE *);int ferror(FILE *);void perror(const char *);extern FILE _IO_stream[FOPEN_MAX];FILE *sopenr(const char *);FILE *sopenw(void);char *sclose(FILE *);char	*dtoa(double, int, int, int*, int*, char**);void	freedtoa(char*);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -