|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)stdio.3s 6.2 (Berkeley) 5/13/86 ! 6: .\" ! 7: .TH STDIO 3S "May 13, 1986" ! 8: .UC 4 ! 9: .SH NAME ! 10: stdio \- standard buffered input/output package ! 11: .SH SYNOPSIS ! 12: .B #include <stdio.h> ! 13: .PP ! 14: .SM ! 15: .B FILE ! 16: .B *stdin; ! 17: .br ! 18: .SM ! 19: .B FILE ! 20: .B *stdout; ! 21: .br ! 22: .SM ! 23: .B FILE ! 24: .B *stderr; ! 25: .SH DESCRIPTION ! 26: The functions described in section 3S constitute a user-level buffering ! 27: scheme. The in-line macros ! 28: .I getc ! 29: and ! 30: .IR putc (3S) ! 31: handle characters quickly. The higher level routines ! 32: .IR gets , ! 33: .IR fgets , ! 34: .IR scanf , ! 35: .IR fscanf , ! 36: .IR fread , ! 37: .IR puts , ! 38: .IR fputs , ! 39: .IR printf , ! 40: .IR fprintf , ! 41: .IR fwrite ! 42: all use ! 43: .I getc ! 44: and ! 45: .IR putc ; ! 46: they can be freely intermixed. ! 47: .PP ! 48: A file with associated buffering is called a ! 49: .IR stream , ! 50: and is declared to be a pointer to a defined type ! 51: .SM ! 52: .BR FILE . ! 53: .IR Fopen (3S) ! 54: creates certain descriptive data for a stream ! 55: and returns a pointer to designate the stream in all further transactions. ! 56: There are three normally open streams with constant pointers declared in ! 57: the include file and associated with the standard open files: ! 58: .TP 10n ! 59: .B stdin ! 60: standard input file ! 61: .br ! 62: .ns ! 63: .TP ! 64: .B stdout ! 65: standard output file ! 66: .br ! 67: .ns ! 68: .TP ! 69: .B stderr ! 70: standard error file ! 71: .PP ! 72: A constant `pointer' ! 73: .SM ! 74: .B NULL ! 75: (0) ! 76: designates no stream at all. ! 77: .PP ! 78: An integer constant ! 79: .SM ! 80: .B EOF ! 81: (\-1) is returned upon end of file or error by integer functions that ! 82: deal with streams. ! 83: .PP ! 84: Any routine that uses the standard input/output package ! 85: must include the header file ! 86: .RI < stdio.h > ! 87: of pertinent macro definitions. ! 88: The functions and constants mentioned in sections labeled 3S ! 89: are declared in the include file and need no further declaration. ! 90: The constants, and the following `functions' are ! 91: implemented as macros; redeclaration of these names is perilous: ! 92: .IR getc , ! 93: .IR getchar , ! 94: .IR putc , ! 95: .IR putchar , ! 96: .IR feof , ! 97: .IR ferror , ! 98: .IR fileno . ! 99: .SH "SEE ALSO" ! 100: open(2), close(2), read(2), write(2), fread(3S), fseek(3S), f*(3S) ! 101: .SH DIAGNOSTICS ! 102: The value ! 103: .SM ! 104: .B EOF ! 105: is returned uniformly to indicate that a ! 106: .SM ! 107: .B FILE ! 108: pointer has not been initialized with ! 109: .IR fopen , ! 110: input (output) has been attempted on an output (input) stream, or a ! 111: .SM ! 112: .B FILE ! 113: pointer designates corrupt or otherwise unintelligible ! 114: .SM ! 115: .B FILE ! 116: data. ! 117: .PP ! 118: For purposes of efficiency, this implementation of the standard library ! 119: has been changed to line buffer output to a terminal by default and attempts ! 120: to do this transparently by flushing the output whenever a ! 121: .IR read (2) ! 122: from the standard input is necessary. This is almost always transparent, ! 123: but may cause confusion or malfunctioning of programs which use ! 124: standard i/o routines but use ! 125: .IR read (2) ! 126: themselves to read from the standard input. ! 127: .PP ! 128: In cases where a large amount of computation is done after printing ! 129: part of a line on an output terminal, it is necessary to ! 130: .IR fflush (3S) ! 131: the standard output before going off and computing so that the output ! 132: will appear. ! 133: .SH BUGS ! 134: The standard buffered functions do not interact well with certain other ! 135: library and system functions, especially \fIvfork\fP and \fIabort\fP. ! 136: .SH "LIST OF FUNCTIONS" ! 137: .sp 2 ! 138: .nf ! 139: .ta \w'setlinebuf'u+2n +\w'setbuf.3s'u+10n ! 140: \fIName\fP \fIAppears on Page\fP \fIDescription\fP ! 141: .ta \w'setlinebuf'u+4n +\w'setbuf.3s'u+4n ! 142: .sp 5p ! 143: clearerr ferror.3s stream status inquiries ! 144: fclose fclose.3s close or flush a stream ! 145: fdopen fopen.3s open a stream ! 146: feof ferror.3s stream status inquiries ! 147: ferror ferror.3s stream status inquiries ! 148: fflush fclose.3s close or flush a stream ! 149: fgetc getc.3s get character or word from stream ! 150: fgets gets.3s get a string from a stream ! 151: fileno ferror.3s stream status inquiries ! 152: fopen fopen.3s open a stream ! 153: fprintf printf.3s formatted output conversion ! 154: fputc putc.3s put character or word on a stream ! 155: fputs puts.3s put a string on a stream ! 156: fread fread.3s buffered binary input/output ! 157: freopen fopen.3s open a stream ! 158: fscanf scanf.3s formatted input conversion ! 159: fseek fseek.3s reposition a stream ! 160: ftell fseek.3s reposition a stream ! 161: fwrite fread.3s buffered binary input/output ! 162: getc getc.3s get character or word from stream ! 163: getchar getc.3s get character or word from stream ! 164: gets gets.3s get a string from a stream ! 165: getw getc.3s get character or word from stream ! 166: printf printf.3s formatted output conversion ! 167: putc putc.3s put character or word on a stream ! 168: putchar putc.3s put character or word on a stream ! 169: puts puts.3s put a string on a stream ! 170: putw putc.3s put character or word on a stream ! 171: rewind fseek.3s reposition a stream ! 172: scanf scanf.3s formatted input conversion ! 173: setbuf setbuf.3s assign buffering to a stream ! 174: setbuffer setbuf.3s assign buffering to a stream ! 175: setlinebuf setbuf.3s assign buffering to a stream ! 176: sprintf printf.3s formatted output conversion ! 177: sscanf scanf.3s formatted input conversion ! 178: ungetc ungetc.3s push character back into input stream ! 179: .fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.