stdio.h
Stdio is the header for the standard functions that deal with input and output to the console and to files.- _fcloseall
- _fdopen
- _fgetchar
- _fileno
- _flushall
- _fputchar
- _fsopen
- _getw
- _okbigbuf
- _putw
- _rmtmp
- _stdaux
- _stdprn
- _tempnam
- clearerr
- fclose
- feof
- ferror
- fflush
- fgetc
- fgetpos
- fgets
- fopen
- fprintf, printf, sprintf, _snprintf
- fputc
- fputs
- fread
- freopen
- fscanf, scanf, sscanf
- fseek
- fsetpos
- ftell
- fwrite
- getc
- getchar
- gets
- putc
- putchar
- puts
- rewind
- setbuf
- setvbuf
- stderr
- stdin
- stdout
- tmpfile
- tmpnam
- ungetc
- vprintf
_fcloseall
- Header
- stdio.h
- Prototype
- int _fcloseall(void);
- Description
- The _fcloseall function closes all open streams and files except stderr, stdin, and stdout. Any data in the I/O buffers is flushed before closing.
- Synonym
- Function: fcloseall
- Return Value
- The number of streams closed. Returns EOF If an error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- _close
fclose
fopen - Example
/* Example for _fcloseall and fopen */ #include <stdio.h> #include <stdlib.h> int main() { int closed_count; FILE *pfile1, *pfile2; pfile1 = fopen("temp.dat", "w+"); pfile2 = fopen("temp2.dat", "w+"); if ((pfile1 == NULL) || (pfile2 == NULL)) perror("A data file could not be opened"); else { closed_count = _fcloseall(); printf("Fcloseall closed %d streams\n", closed_count); } return EXIT_SUCCESS; }
- Output
Fcloseall closed 2 streams
_fdopen
- Header
- stdio.h
- Prototype
- FILE *_fdopen(int fd, const char *mode);
- Description
-
_fdopen allows a file that has been open for low-level,
unbuffered I/O (with open) to be associated with an input/output
stream. When the file is associated with a stream, it can be
buffered and formatted.
The handle of the already opened file is passed as fd and the file mode is pointed to by mode. If the specified mode is an append mode, the file pointer is positioned at the end of the file, otherwise the file pointer is positioned at the beginning of the file. If the specified mode is a write mode, the file is truncated. No checking is done to assure that the mode of the buffered file is compatible with the mode of the unbuffered file. Incompatibility of file modes will give undefined results.
The values for mode are:
Value Meaning "r" Read only. "w" Write only with truncation; existing contents are destroyed. "a" Write only with append. "r+" Read and write. "w+" Read and write with truncatation; existing contents are destroyed. "a+" Read and write with append. Values that can be appended to the mode are:
t Open in text (translated) mode. b Open in binary (untranslated) mode. - Synonym
-
Function: fdopen
- Return Value
- A FILE pointer to opened file. NULL is returned is the file could not be opened with buffering.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_open
fopen - Example
/* Example for _fdopen Also demonstrates open, fgets */ #include <dos.h> #include <fcntl.h> #include <io.h> #include <stdio.h> #include <stdlib.h> int main() { int fd; FILE *fp; char line[81]; fd = open("temp.dat", O_RDONLY); if (fd == -1) perror("Error opening file"); else { fp = _fdopen(fd, "r"); if (fp == NULL) perror("Error opening file for read"); else { fgets(line, 80, fp); printf("The first line of temp.dat is:\n%s\n", line); } } }
- Output
The first line of temp.dat is: This is an example.
_fgetchar
- Header
- stdio.h
- Prototype
- int _fgetchar(void);
- Description
- _fgetchar reads a single character from stdin. The character is converted and returned as an integer.
- Synonym
-
Function: fgetchar
- Return Value
- The character that was read. Returns EOF if an error or end-of-file is encountered.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fputc
getc
getchar - Example
/* Example for _fgetchar */ #include <stdio.h> #include <stdlib.h> int main() { char ch; printf("Enter a character followed by ret:\n"); ch = _fgetchar(); printf("The character read from stdin is : %c\n", ch); }
- Output
Enter a character followed by ret: j The character read from stdin is : j
_fileno
- Header
- stdio.h
- Prototype
- int _fileno(FILE *fp);
- Description
- Returns the file descriptor associated with stream fp. The fp argument must point to a file which is already open. The fileno function converts a file pointer to a file descriptor for use with the low-level file functions such as close, read, and write. Mixing of high and low level functions is not recommended.
- Synonym
-
Function: fileno
- Return Value
- Returns the file descriptor; no error return.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fopen
freopen - Example
/* Example for _fileno */ #include <stdio.h> #include <stdlib.h> int main() { printf("The handle for stdin is %d\n", _fileno(stdin)); printf("The handle for stdout is %d\n", _fileno(stdout)); printf("The handle for stderr is %d\n", _fileno(stderr)); }
- Output
The handle for stdin is 0 The handle for stdout is 1 The handle for stderr is 2
_flushall
- Header
- stdio.h
- Prototype
- int _flushall(void);
- Description
- The _flushall function flushes the I/O buffers for all open streams. Output buffers are written to their associated files and input buffers are cleared. All streams remain open after a call to _flushall. Any read operation reads new data into the buffers.
- Synonym
-
Function: flushall
- Return Value
- The number of open streams.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fflush
- Example
/* Example for _flushall */ #include <stdio.h> #include <stdlib.h> int main() { int tf; tf = _flushall(); printf("%d streams flushed\n", tf); }
- Output
5 streams flushed
_fputchar
- Header
- stdio.h
- Prototype
- int _fputchar(int c);
- Description
- The _fputchar function is equivalent to fputc, except that _fputchar writes the character to standard output.
- Synonym
-
Function: fputchar
- Return Value
- The last character output to the stream. An EOF is returned on error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fgetc
fputc
getchar - Example
/* Example for fputchar */ #include <stdio.h> int main() { char *str = "All the king's horses and all the king's men", *ptr; ptr = str; while (* ptr && (fputchar(*(ptr++)) != EOF)); }
- Output
All the king's horses and all the king's men
_fsopen
- Header
-
stdio.h
share. h - Prototype
- FILE *_fsopen(const char *filename, const char *mode, int shflag);
- Description
-
The _fsopen function opens filename as a stream and returns
the associated stream pointer. The mode argument specifies the type
of access that is allowed; the shflag argument specifies the sharing
mode. Values for the mode argument are:
Values that can be appended to the mode argument are:Value Meaning "r" Read only; file must exist or call will fail. "w" Write only and truncate; if file exists, existing contents are destroyed. "a" Write only and append; if file does not exist, it is created. "r+" Read and write; file must exist or call will fail. "w+" Read, write, and truncate; if file exists, existing contents are destroyed. "a+" Read, write, and append; if file does not exist, it is created.
The following values can be specified for the shflag argument and are are defined in share. h. If share.com (or share. exe, for some DOS versions) is not installed, shflag is ignored.t Open in text (translated) mode. b Open in binary (untranslated) mode _SH_COMPAT Sets compatibility mode _SH_DENYNO Permits read and write access _SH_DENYRD Denies read access to file _SH_DENYRW Denies read and write access to file _SH_DENYWR Denies write access to the file A pointer to the stream. A NULL pointer value indicates an error.
- Return Value
- A pointer to the stream. A NULL pointer value indicates an error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fclose
_fcloseall
_fdopen
fopen
freopen
_open
_setmode
_sopen - Example
/* Example of _fsopen */ #include <dos.h> #include <io.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <share.h> int main() { FILE *fp; char fn[_MAX_PATH]; printf("Enter a filename: "); gets(fn); if ((fp = _fsopen(fn, "r", _SH_DENYRW)) == NULL) { perror("Cannot open file"); exit(EXIT_FAILURE); } printf("File opened successfully, no one else can read or write to it.\n"); fclose(fp); }
- Output
Enter a filename: _fsopen.c File opened successfully, no one else can read or write to it.
_getw
- Header
- stdio.h
- Prototype
- int _getw(FILE *stream);
- Description
- The _getw function returns the next binary value of type int from the file associated with the stream argument. The file pointer is incremented to point to the next unread character. Do not use this function on a file that was opened in text mode.
- Synonym
-
Function: getw
- Return Value
- The next integer in the file. If an error occurs or the end-of-file is read, EOF is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- _putw
- Example
/* Example for _getw Also demonstrates _putw, fopen, fclose, rand */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; int n, i; fp = fopen("testfile", "wb"); if (fp == NULL) { perror("Couldn't open TESTFILE to write"); exit(EXIT_FAILURE); } printf("Writing "); for (i = 10; i > 0; i -= 1) { n = rand (); printf("%d ", n); _putw (n, fp); } printf("\n"); fclose(fp); fp = fopen("testfile", "rb"); if (fp == NULL) { perror("Couldn't open TESTFILE to read"); exit(EXIT_FAILURE); } printf("Read "); for (;;) { n = _getw(fp); if (n == EOF) break; printf("%d ", n); } printf("\n"); fclose(fp); }
- Output
Writing 16838 5758 10113 17515 31051 5627 23010 7419 16212 4086 Read 16838 5758 10113 17515 31051 5627 23010 7419 16212 4086
_okbigbuf
- Header
- tsr.h
- Prototype
- extern int _okbigbuf;
- Description
-
This variable, used in T and S Memory Models only, defines which
memory allocation method to use:
- Allocate all available memory up to 64 KB to the heap upon program startup. This is the default method.
- Allocate memory to the heap only as needed. Use this method if a spawn function will be needed. To use, declare _okbigbuf as shown below. For more information, see the Compiler and Tools Guide.
int _okbigbuf = 0;
_okbigbuf != 0 signifies that large disk buffers are used for stream I/O outside the data segment.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
_putw
- Header
- stdio.h
- Prototype
- int _putw(int binint, FILE *stream);
- Description
- The _putw function writes the binary value stored in the binint argument to the current position of the stream argument. The function does not affect the alignment of items in the stream. Portability problems can occur with the _putw function because the size of an int and ordering of bytes within an int can vary across systems.
- Synonym
-
Function: putw
- Return Value
- Both functions return the value that is written. If an error occurs, EOF is returned. EOF may also be a legitimate integer value. Therefore, use ferror to verify an error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- _getw
- Example
- See getw
_rmtmp
- Header
- stdio.h
- Prototype
- int _rmtmp(void);
- Description
- The _rmtmp function closes and deletes all temporary files created by tmpfile in the current directory. The current directory must be the same directory in which the files were created.
- Return Value
- The number of temporary files closed and deleted.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_flushall
tmpfile
tmpnam - Example
/* Example of _rmtmp */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; int i; for (i = 1; i <= 10; i++) if ((fp = tmpfile ()) == NULL) perror("Could not open temp file"); else printf("Temp file %d created\n", i); i = _rmtmp (); printf("Removed %d temp files\n", i); }
- Output
Temp file 1 created Temp file 2 created Temp file 3 created Temp file 4 created Temp file 5 created Temp file 6 created Temp file 7 created Temp file 8 created Temp file 9 created Temp file 10 created Removed 10 temp files
_stdaux
- Header
- stdio.h
- Prototype
- extern File *_stdaux;
- Description
- _stdaux is a constant FILE pointer to the standard auxiliary stream, which is usually the first serial port. I/O through _stdaux is usually unbuffered
- Synonym
-
stdaux
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
stderr
stdin
stdout
_stdprn
_stdprn
- Header
- stdio.h
- Prototype
- extern FILE *_stdprn;
- Description
- _stdprn is a constant FILE pointer to the standard print stream, which is usually the first parallel port. I/O through _stdaux is usually unbuffered.
- Synonym
-
stdprn
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_stdaux
stderr
stdin
stdout
_tempnam
- Header
- stdio.h
- Prototype
- char *_tempnam(char *dir, char *prefix);
- Description
- The _tempnam function generates a unique temporary filename that is valid, but not the same as, the name of any existing file. The function is similar to tmpnam, except the string returned is always malloc'ed. The dir argument is the directory in which to create the temporary file. If dir is NULL, the current directory specified by the P_tmpdir constant is used. The prefix argument is a 5 character prefix string used for the start of the temporary filename.
- Synonym
-
Function: tempnam
- Return Value
- A malloc'ed string containing the temporary file name. If tempnam is unable to create the temporary filename for any reason a NULL pointer is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- tmpnam
- Example
/* Example for _tempnam */ #include <stdio.h> #include <stdlib.h> int main() { char *name; if ((name = _tempnam (NULL, "abcde")) == NULL) { perror("Unable to create temporary filename"); exit(EXIT_FAILURE); } printf("Temporary filename \"%s\" created.\n", name); free (name); }
- Output
Temporary filename "abcdeCCE. tmp" created.
clearerr
- Header
- stdio.h
- Prototype
- void clearerr(FILE *fp);
- Description
- The clearerr function clears error and EOF (end-of-file) flags associated with the stream fp. Once the error flag on a stream is set, any operation carried out on that stream will return an error status unless a call is made to clearerr. Flag EOF is cleared with each input from the stream.
- Return Value
- None
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
feof
ferror - Example
/* Example for clearerr */ #include <stdio.h> #include <stdlib.h> int main() { FILE *stream; char *string = "Sample Data"; stream = fopen("temp.dat", "r"); fprintf(stream, "%s\n", string); if (ferror(stream)) { printf("Write File Error"); clearerr(stream); fclose(stream); } else { printf("No error writing to stream"); fclose(stream); } }
- Output
Write File Error
fclose
- Header
- stdio.h
- Prototype
- int fclose(FILE *fp);
- Description
- fclose closes the file associated with the stream fp. Any data in the output buffer for fp is flushed (written to the file) before closing.
- Return Value
- fclose returns 0 if the stream successfully closed. A -1 is returned on error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_close
fopen
freopen - Example
/* Example for fclose Also demonstrates fopen */ #include <stdio.h> #include <stdlib.h> int main() { FILE *pfile; pfile = fopen("temp.dat", "w+"); if (pfile == NULL) perror("Data file not opened"); else { fclose(pfile); printf("Data file closed using fclose\n"); } }
- Output
Data file closed using fclose
feof
- Header
- stdio.h
- Prototype
- int feof(FILE *fp);
- Description
- feof determines if the stream fp is at the end of file. After the EOF indicator is set no further read operations are allowed.
- Return Value
- Returns non-zero if current position is at the end of the file (which sets the EOF flag in the FILE structure). No read operations are allowed after the flag is set. The flag is cleared if rewind or fseek are called, or when the file is closed. Returns 0 if the the EOF flag is not set.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
clearerr
ferror - Example
/* Example for feof Also demonstrates fopen, fgets */ #include <stdio.h> #include <stdlib.h> #define BUFSIZE 128 char buffer[BUFSIZE]; int main() { FILE *fp; fp = fopen("temp.dat", "r"); if (fp != NULL) { while (! feof(fp)) { fgets (buffer, BUFSIZE, fp); printf("%s", buffer); } } else perror("Error opening file"); }
- Output
This program types the contents of temp.dat to the screen.
ferror
- Header
- stdio.h
- Prototype
- int ferror(FILE *fp);
- Description
- ferror checks the error flag on the stream fp. The error flag remains set until a call to clearerr, or rewind is issued, or the stream is closed. No read or write operations can be carried out until this flag is cleared.
- Return Value
- Returns non-zero if the error flag is set. Otherwise it returns a zero.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
clearerr
feof - Example
/* Example for ferror Also demonstrates clearerr */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; fp = fopen("temp.dat", "r"); if (fp != NULL) { fputs("This is a write error\n", fp); if (ferror(fp)) { printf("Stream i/o error"); clearerr(fp); } fclose(fp); } else perror("Error opening file"); }
- Output
Stream i/o error
fflush
- Header
- stdio.h
- Prototype
- int fflush(FILE *fp);
- Description
- Flushes the buffer associated with stream fp. If fp is NULL, fflush flushes the buffers for all open streams. If the file is opened for writing, the buffer is written. If the file is opened for reading, the buffer is cleared. The fflush function may be used to force the data in the file buffer to be written to the file before the buffer becomes full. Similarly data read from a file is input a buffer full at a time. Only after every character has been processed does another file access occur. The fflush function may be used to clear the buffer and thus force the next read operation to occur.
- Return Value
- 0 if the buffer is successfully flushed. Returns EOF if an error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fclose
_flushall - Example
/* Example for fflush */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; fp = fopen("temp.dat", "w"); fflush(fp); /* Flush buffer to disk to protect data before performing operations that can cause system crash */ fclose(fp); }
- Output
This program produces no output.
fgetc
- Header
- stdio.h
- Prototype
- int fgetc(FILE *fp);
- Description
- fgetc reads and returns the next character from the stream fp. The character is returned as an integer in the range of 0 to 255.
- Return Value
- Returns the character just read on success, or EOF if end-of-file or a read error is encountered. The return value must always be assigned to a variable of type int, or an error cannot be detected (as EOF is negative).
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fputc
putchar
getc
getchar
_getche
_getch
- Example
/* Example for fgetc, fputc */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; int input; fp = fopen("temp.dat","w+"); if (fp!= NULL) { printf("Enter data terminated by ctrl-z:"); while ((input = fgetc(stdin)) != EOF) { printf("%c",(char)input); fputc(input, fp); } fclose(fp); } else perror("Error opening temp file"); }
- Output
-
This program will echo keyboard input to the screen and put it in the file temp.dat. The program output looks like this:
Enter data terminated by ctrl-z: Hello from Digital Mars Hello from Digital Mars ^Z
fgetpos
- Header
- stdio.h
- Prototype
- int fgetpos(FILE *fp, fpos_t *pos);
- Description
- The function fgetpos gets the current position of the stream fp. The position is stored in pos.
- Return Value
- Returns 0 if successful, otherwise returns non-zero with errno set.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fsetpos
- Example
/* Example for fgetpos, fsetpos */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; fpos_t fpos; char dump[64]; fp = fopen("temp.dat", "r"); fread(dump, 1, 64, fp); /* save current position */ if (fgetpos(fp, &fpos) != 0) perror("fgetpos failed"); fread(dump, 1, 64, fp); /* back to previous position*/ if (fsetpos(fp, &fpos) != 0) perror("fsetpos failed"); fclose(fp); }
- Output
This program produces no output.
fgets
- Header
- stdio.h
- Prototype
- char *fgets(char *str, int n, FILE *fp);
- Description
- Reads characters from stream fp into the string pointed to by str. The integer argument n indicates the maximum number of characters that the buffer str can store. Reading stops when a newline is read, end-of-file is encountered, a read error occurs, or n-1 characters were read. Newlines are included in the string. The string read is terminated with a 0.
- Return Value
- String str if successful. If no characters have been read into str and a read error or EOF is encountered, NULL is returned and the string pointed to by str is unchanged. If a read error occurs, NULL is returned and str contains garbage.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fputs
gets
puts - Example
/* Example for fgets */ #include <stdio.h> #include <stdlib.h> int main() { char buffer[255]; int buflen; char *result; buflen = 255; printf("Enter line of data:\n"); result = fgets(buffer, buflen, stdin); if (result == NULL) printf("\nEOF or Error\n"); else printf("The input was :\n%s\n", buffer); }
- Output
-
Enter line of data: The quick brown fox jumped over the lazy dog. The input was : The quick brown fox jumped over the lazy dog.
fopen
- Prototype
- FILE *fopen(char *name, char *mode);
- Description
-
fopen opens a file. name gives the filename to be opened. mode is
a character string indicating how the file is to be opened. Possible
values for mode are:
"r" for reading "w" for writing (truncates any existing file with the same name) "a" for appending (if file exists then open for writing at end of file, else create the file) "r+" for reading and writing "w+" for reading and writing (if file exists then truncate it, else create it) "a+" for reading and writing (if file exists, position at end of file, else create it) In addition, a "b" may be appended to the mode string to indicate that the file is to be opened in binary mode (the default is text mode). If a file is opened for reading and writing, only reads or only writes can be done at any one time. To switch from reading to writing, or vice versa, an fseek must be performed on the stream, unless during input an EOF was read.
If you open a file in append mode("a"), your writing is always appended to the end of the file, even if you call fseek or fgetpos.
- Return Value
- fopen returns a FILE pointer to an open file. A NULL return value indicates an error
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fclose
freopen
_open - Example
/* Example for fopen */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; if ((fp = fopen("file.dat", "w")) == NULL) { perror("Error creating file"); exit(EXIT_FAILURE); } printf("Opened file file.dat\n"); fprintf(fp, "This is the first line\n"); printf("Wrote to file\n"); fclose(fp); printf("Closed file\n"); fp = fopen("file.dat", "a"); if (fp == NULL) { perror("Error creating file"); exit(EXIT_FAILURE); } printf("Opened file file.dat for appending\n"); fprintf(fp, "This is the second line\n"); printf("Added to file\n"); fclose(fp); printf("Closed file\n"); return 0; }
- Output
Opened file file.dat Wrote to file Closed file Opened file file.dat for appending Added to file Closed file
fprintf, printf, sprintf, _snprintf
- Header
- stdio.h
- Prototype
-
int fprintf(FILE *fp, const char *format, arg0... argn);
int printf(const char *format, arg0... argn);
int sprintf(char *buffer, const char *format, ...);
int _snprintf(char *buffer, size_t count, const char *format, ...); - Description
-
fprintf writes formatted data to the file stream fp.
printf writes formatted data to stdout.
sprintf writes formatted data to buffer and 0 terminates it.
_snprintf function differs from sprintf in that it stores no more than count characters in buffer.Arguments are interpreted according to the null-terminated format string. The format string is a sequence of characters with embedded conversion commands. Characters that are not part of the conversion command are output. Conversion commands consist of:
'%'{flag}[field_width]['.' precision][size_and_dist] conversion_char
where a % always signifies the beginning of a conversion command. To print a % use %%.Flag Characters
- Means left justify the conversion + Means that signed conversions always start with a + or - (Space) Means that for positive conversions, the conversion will start with a space. The + flag overrides the (Space) flag. # For x or X conversions, if the result is non-zero then a 0x or 0X will be added to the front of it. For o conversions, a leading 0 will be added. For floating conversions (e, E, f, g, G), a decimal point will always appear. If it is g or G, then trailing 0's will not be truncated.
Field Width
This is a decimal integer controlling the minimum number of characters printed. If the actual number of characters is less than the field_width, it is padded with blanks. If the field_width digit string begins with a 0, it is padded with a 0.
If the field_width is the character *, the actual field_width value is taken from the next int arg. If the field_width is negative, it is treated as if the - flag were given and the absolute value of the field_width is used.
If there are more characters than allowed for by the field_width, then the width is expanded appropriately.
Precision
Followed by a digit string specifying the precision of the conversion. If no digits appear after the ., then the precision is taken as 0. For integral conversions, this is the minimum number of digits. For g and G, the precision gives the maximum number of digits appearing after the decimal point. For s, it is the maximum number of characters in a string. If precision is the character *, the precision is taken from the next int argument.
Size and Distance
Size and distance arguments are:
F __far pointer N __near pointer hh char integer h short integer l long integer ll long long integer j intmax_t or uintmax_t integer z size_t integer t ptrdiff_t integer L long double Conversion Character
One of the characters b, d, i, o, u, x, X, a, A, f, F, e, E, g, G, c, s, p, n, %. Other characters cause undefined behavior.
b, d, i, o, u, x, X The argument is an integer and it is converted to a string of digits according to the conversion character. b is unsigned binary, o is unsigned octal, u is unsigned decimal, x and X are unsigned hex, i and d are signed decimal. For x, lower-case hex letters are used. For X, upper-case ones are used. If no precision is specified, it defaults to one. If there are fewer digits than precision, leading spaces are placed before the digits. If argument is 0 and precision is 0, no characters are printed. c The least significant byte of the integer argument is printed as a character. e, E The argument is a double, and is printed in scientifc notation, [-]d.dddddde+-dd. There is one digit before the decimal point and precision digits after. The precision defaults to 6. If the precision is 0, the decimal point is not written. E is used for the exponent instead of e if the E conversion character was specified. A minimum of two digits will appear in the exponent. f, F The argument is a double. It is converted to a decimal string of the form [-]dd.dddd. The number of digits after the decimal point is given by the precision, which defaults to 6. If the precision is 0, no fractional digits or decimal points appear. The F will result in INF or NAN rather than inf or nan. g, G The argument is a double. It is printed using f or e (or E if G was specified) format, depending on the value of the argument. e will be used if the exponent is less than -3 or greater than the precision. The precision gives the number of significant digits; it defaults to 6. The decimal point appears if followed by a digit; trailing 0's are truncated. a, A The argument is a floating point number, which is converted to hex in the form [-]0x1.hhhhhp+-d, or 0 if the number is 0.hhhhh are the digits of the mantissa in hex, and d is the exponent in decimal as a power of 2. If no precision is specified, sufficient digits will be generated to produce an exact value. Otherwise, it is rounded to the specified precision. The A format will render the result in all upper case. Trailing zeros are omitted. If the # flag is not specified and the precision is 0, no decimal point is generated. n The argument is a pointer to an int, into which is written the number of characters printed so far. No characters are generated or converted by this. p The argument is a pointer that for far pointers is printed as segment:offset or for near pointers as xxxx. s The argument is a pointer to a string. The characters are printed until a 0 character is encountered or the number of characters specified in precision are printed. The terminating 0 is not printed. The precision defaults to 32767. % The % character is printed. - Return Value
-
The number of characters written or a negative value on error.
For sprintf and _snprintf, the terminating 0 character is not counted.
For _snprintf, if the number of characters required to store the data exceeds count, count characters of data are stored in buffer and -1 is returned. - Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fscanf
vprintf Functions - Example
/* Example for fprintf */ #include <stdio.h> #include <stdlib.h> int main() { char *msg = "Integer formats are: "; int testint = 10; fprintf(stdout, "%sHex: (%X) Dec: (%d) Oct: (%o) Bin: (%b)\n", msg, testint, testint, testint, testint); return 0; }
- Output
Integer formats are: Hex: (A) Dec: (10) Oct: (12) Bin: (1010)
fputc
- Header
- stdio.h
- Prototype
- int fputc(int c, FILE *fp);
- Description
- fputc writes the character c to the stream fp.
- Return Value
- fputc returns the last character output to the stream. An EOF is returned on error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_fputchar
getc
fputs
- Header
- stdio.h
- Prototype
- int fputs(const char *s, FILE *fp);
- Description
- fputs writes the string s (excluding the terminating 0) to the stream fp.
- Return Value
- Returns non-negative if successful, EOF if a write error occurred.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fgets
gets
puts
fread
- Header
- stdio.h
- Prototype
- size_t fread(const void *p, size_t sizelem, size_t n, FILE *fp);
- Description
-
Reads n elements from stream fp into the array that p points to.
sizelem is the number of bytes in each element.
If sizelem or n is zero, fread doesn't change doesn't change the contents of the array and returns zero.
- Return Value
- fread returns the number of complete elements actually read. If an error or an end of file is encountered, it will return less than n.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fwrite
_read - Example
/* Example for fread */ #include <stdio.h> #include <stdlib.h> #define BUFSZ 256 int main() { char buf[BUFSZ], fname[_MAX_PATH]; int sizelem, totalnum = BUFSZ, numread; FILE *fd; printf("Enter filename: "); gets(fname); fd = fopen(fname, "r"); if (fd == NULL) { perror("Error opening file"); exit(EXIT_FAILURE); } sizelem = sizeof(char); numread = fread(buf, sizelem, totalnum, fd); printf("Total read %d\n", numread); printf("Data read\n %.256s", buf); }
- Output
-
Enter filename: fread.c Total read 256 Data read /* Example for fread */ #include <stdio.h> #include <stdlib.h> #define BUFSZ 256 int main() { char buf[BUFSZ], fname[_MAX_PATH]; int sizelem, totalnum = BUFSZ, numread; FILE *fd; printf("Enter filename: "); gets(fname); if ((fd
freopen
- Header
- stdio.h
- Prototype
- FILE *freopen(const char *name, const char *mode, FILE *fp);
- Description
- The freopen function closes the file indicated by fp. Errors while closing the file are ignored. The function then opens a new file and associates the stream fp with it. name and mode have the same meaning as in fopen.
- Return Value
- freopen returns fp if successful, otherwise a NULL.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fclose
fopen
_open - Example
/* Example for freopen */ #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; char fname1[_MAX_PATH]; char fname2[_MAX_PATH]; printf("Enter the first filename: "); gets(fname1); printf("Enter the second filename: "); gets(fname2); fp = fopen(fname1, "r"); if (fp == NULL) { perror("Could not open first file"); exit(EXIT_FAILURE); } printf("File \"%s\" is now open\n", fname1); fp = freopen(fname2, "r", fp); if (fp == NULL) { perror("Could not reopen to second file"); exit(EXIT_FAILURE); } printf("File \"%s\" closed and \"%s\" is now open\n", fname1, fname2); }
- Output
Enter the first filename: fread.c Enter the second filename: freopen.c File "fread.c" is now open File "fread.c" closed and "freopen.c" is now open
fscanf, scanf, sscanf
- Header
- stdio.h
- Prototype
- int fscanf(FILE *fp, const char *format, ...);
int scanf(char *format, ...);
int sscanf(const char *buffer, const char *format, ...); - Description
-
fscanf reads characters from the input stream fp.
scanf reads characters from the input stream stdin.
sscanf reads characters from the string buffer.Characters read are converted according to the format string and the values created are stored through the argument pointers. Note that the arguments are pointers to where values will be stored.
The format string consists of:
- Spaces, tabs, and newlines that cause input to be
skipped up to the next character, which is not
whitespace.
- Other characters, except for %, that are matched against
the input.
- Conversion specifications:
%[*][field_width][size][dist]conv_char
Field Width
field_width is a sequence of decimal digits specifying the maximum number of characters in the field.
Size
hh The following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a char. h Argument is a pointer to a short. l A following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a long. A following a,A,e,E,f,F,g,G refers to an argument that is a pointer to a double. A following c, s or [ refers to an argument that is a pointer to a wchar_t. ll A following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a long long. j A following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a intmax_t. z A following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a size_t. t A following b,d,i,o,u,x,X or n refers to an argument that is a pointer to a ptrdiff_t. L A following a,A,e,E,f,F,g,G refers to an argument that is a pointer to a long double. Distance
The distance characters for the next argument are:
N Near pointer F Far pointer Conversion Character
The conversion characters are:
b A binary number is expected, the argument pointer must be a pointer to an int.
d An integer is expected, the argument pointer must be a pointer to an int. a, e, f, g A floating-point number is expected. Argument pointer must be a pointer to a float (double if l or L is used). i An integer is expected. If it starts with a 0, it is taken to be octal. If it starts with 0x or 0X, it is hexadecimal. The argument pointer must be a pointer to an int. o An octal number is expected. The argument pointer must be a pointer to an int. p A hexadecimal integer is expected. The argument pointer must be a pointer to a pointer. u An unsigned int is expected, the argument pointer must be a pointer to an unsigned. n An int value is stored through the corresponding argument pointer, specifying the number of characters read up to this point by this call to fscanf. [ A string is expected. Between the [and a closing ] are characters acceptable to the string. If the [is immediately followed by a ^, acceptable characters for the string are all those except the ones between the ^ and the ] . The argument pointer must be a pointer to a character array. A NULL character is appended to the string. s A string is expected. The argument pointer must be a pointer to a string. The input field extends until a space or newline is read, which is not part of the field. A NULL character is appended to the string. c A character is expected. The argument pointer must be a pointer to a character. If a field_width is specified, then that many characters are read and the argument pointer must point to a character array large enough to hold the result. % Match the input with a %. The conversion characters a, e, f, g, and x may be uppercase, with no difference in meaning. Other conversion characters will cause unexpected results. Conflicting characters are left unread in the input stream. There is no direct way to determine if suppressed assignments or literal matches succeeded, unless %n is used.
- Spaces, tabs, and newlines that cause input to be
skipped up to the next character, which is not
whitespace.
- Return Value
- The number of assigned input items excluding any assignment suppressed conversions. If end of file is encountered before assignments are done or before conflicts occur, EOF is returned. fscanf returns when it reaches the end of the format string.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fprintf
- Example
-
/* Example for fscanf */ #include <stdio.h> #include <stdlib.h> int main() { char first[16]; char last[16]; int age; int res; printf("Enter your first and last name in the form \" first last\": "); res = fscanf(stdin, "%s %s", first, last); if (res != 2) { printf("Error reading name.\n"); exit(EXIT_FAILURE); } printf("Your name is %s %s.\n", first, last); printf("How old are you %s? ", first); res = fscanf(stdin, "%d", &age); if (res != 1) { printf("Error reading age.\n"); exit(EXIT_FAILURE); } printf("Oh, %d.\n", age); return 0; }
- Output
Enter your first and last name in the form "first last": John Doe Your name is John Doe. How old are you John? 32 Oh, 32.
- Example 2
-
/* Example of sscanf */ #include <stdio.h> #include <stdlib.h> int main() { char *buf = "1.24..."; char str[8]; float f; int i; sscanf(buf, "%s", str); sscanf(buf, "%f", &f); sscanf(buf, "%d", &i); printf("Scanned \"%s\" for a string, float and integer\n", buf); printf("String: \"%s\"\n", str); printf("Float: %f\n", f); printf("Integer: %d\n", i); return 0; }
- Output
Scanned "1.24..." for a string, a float and an integer String: "1.24..." Float: 1.240000 Integer: 1
fseek
- Header
- stdio.h
- Prototype
- int fseek(FILE *fp, long offset, int origin);
- Description
-
Sets the file position associated with the stream fp.
offset is the
signed offset in bytes relative to that specified by origin.
Values for
origin are defined in io.h and stdio.h:
origin Description SEEK_SET Beginning of file SEEK_CUR Current position SEEK_END End of file If the file is opened in text mode, offset can be only a value returned by ftell and origin can be only SEEK_SET, or offset must be 0. If an ungetc was called immediately before fseek, ungetc is undone. If the file was opened in read/write mode (see fopen) following fseek, reading or writing may be performed.
- Return Value
- fseek returns 0 if the pointer was successfully moved. fseek returns a non-zero value if an error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
ftell
_lseek - Example
/* Example of fseek */ #include <io.h> #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; long offset, lpos; char c; fp = fopen("\\dm\\include\\io.h", "r"); if (fp < 0) perror("Error opening file"); else { offset = 35L; if (fseek(fp,offset,SEEK_SET)!=0) { perror("Error seeking"); exit(EXIT_FAILURE); } c = fgetc(fp); printf("Character at position 35 is %d\n", c); offset = 10L; if (fseek(fp,offset,SEEK_CUR)!=0) { perror("Error seeking"); exit(EXIT_FAILURE); } c = fgetc(fp); printf("Character at prior position + 10 is %d\n", c); offset = 0L; if (fseek(fp,offset,SEEK_END)!=0) { perror("Error seeking"); exit(EXIT_FAILURE); } c = fgetc(fp); printf("Character at end of file is %d\n", c); fclose(fp); } }
- Output
Character at position 35 is 116 Character at prior position + 10 is 105 Character at end of file is -1
fsetpos
- Header
- stdio.h
- Prototype
- int fsetpos(FILE *fp, const fpos_t *pos);
- Description
- The function fsetpos restores the position of the stream fp as previously saved in pos by a call to fgetpos.
- Return Value
- 0 if successful, otherwise non-zero with errno set.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fgetpos
- Example
- See fgetpos
ftell
- Header
- stdio.h
- Prototype
- long ftell(FILE *fp);
- Description
- ftell returns the current position in the file associated with the stream fp. If the file is opened in text mode, the returned value may not accurately reflect the number of bytes actually read or written.
- Return Value
- ftell returns the current file position. If an error occurs -1 is returned and errno is set.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fseek
_isatty - Example
/* Example for ftell */ #include <stdlib.h> #include <stdio.h> #include <io.h> #include <string.h> int main() { char fname[_MAX_PATH]; char line[128]; FILE *fp; long offset; printf("Enter a filename: "); gets(fname); if ((fp = fopen(fname, "r")) == NULL) { perror("Unable to open input file"); exit(EXIT_FAILURE); } setbuf(fp, NULL); fgets(line, 128, fp); if (line[strlen (line) -1] == '\n') line[strlen (line) -1] = '\x00'; offset = ftell(fp); printf("After reading the first line in file \"%s\":\n \"%s\"\n", fname, line); printf("The file pointer is at offset: %d\n", offset); fclose(fp); }
- Output
Enter a filename: ftell.c After reading the first line in file "ftell.c": "/*" The file pointer is at offset: 4
fwrite
- Prototype
-
size_t fwrite(const void *buffer, size_t sizelem,
size_t n, FILE *fp); - Description
- The function fwrite writes n elements of sizelem bytes from buffer to the stream fp.
- Return Value
- Returns the number of complete elements actually written, which may be less than n if an error occurred.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fread
- Example
-
/* Example for fwrite */ #include <stdlib.h> #include <stdio.h> #include <string.h> int main() { FILE *fp; char *str = "Write this data to file"; char buffer[128]; int count, nwritten, nread; count = strlen (str) + 1; fp = fopen("file.dat", "w+"); if (fp == NULL) { perror("Unable to create file: file.dat"); exit(EXIT_FAILURE); } printf("Writing string \"%s\" to file...\n", str); nwritten = fwrite(str, sizeof(char), count, fp); printf("%d bytes written\n", nwritten); rewind(fp); printf("Reading back from file...\n"); nread = fread(buffer, sizeof(char), count, fp); printf("%d bytes read from file\nString read is \"%s\"\n", nread, buffer); fclose(fp); return 0; }
- Output
Writing string "Write this data to file" to file... 24 bytes written Reading back from file... 24 bytes read from file String read is "Write this data to file"
getc
- Header
- stdio.h
- Prototype
- int getc(FILE *fp);
- Description
- getc obtains one character from the stream fp. Input is line-buffered and therefore a carriage return is required before the character is returned.
- Return Value
- Returns the next character of the line read. Otherwise, returns a value of EOF on error.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fgetc
_getch
getchar
_getche
putc
ungetc - Example
/* Example for getc */ #include <stdio.h> #include <stdlib.h> int main() { int input; printf("Input a character then hit return: "); input = getc(stdin); printf("'%c' was returned by getc()\n", input); }
- Output
Input a character then hit return: g 'g' was returned by getc()
getchar
- Header
- stdio.h
- Prototype
- int getchar(void);
- Description
- The getchar function gets a character from the stream stdin.
- Return Value
- Returns the next character read. On error returns a value of EOF.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fgetc
getc
getchar
_getche
putchar
_getch
ungetc - Example
/* Example for getchar */ #include <stdio.h> #include <stdlib.h> int main() { int input; printf("Input a character then press return: "); input = getchar(); printf("'%c' was returned by getchar()\n", input); }
- Output
Input a character then press return: g 'g' was returned by getchar()
gets
- Header
- stdio.h
- Prototype
- char *gets(char *str);
- Description
- Read characters from stdin into the string str until a newline is read or an end-of-file is encountered. Newlines are not written to the string. The string is terminated with a NULL character. str must be large enough to hold the resulting string.
- Return Value
- Returns str if successful. A NULL is returned if an end-of-file is encountered and no characters have been written to str, or if a read error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fgets
puts - Example
/* Example for gets Also demonstrates puts gets.c */ #include <stdio.h> #include <stdlib.h> int main() { char buffer[128]; printf("Type something: "); gets(buffer); printf("You typed: "); puts(buffer); }
- Output
c:\dm\examples> gets Type something: Hello there You typed: Hello there
putc
- Header
- stdio.h
- Prototype
- int putc(int c, FILE *fp);
- Description
- The putc function writes the character c to the stream fp.
- Return Value
- Returns the character just written. EOF is returned if an error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fputc
getc
putchar - Example
/* Example for putc */ #include <stdio.h> #include &stdlib.h> int main() { char *string = "This is an example of putc()"; char *scan = string; while (* scan) { if (putc(*scan, stdout) == EOF) exit(EXIT_FAILURE); scan++; } }
- Output
This is an example of putc()
putchar
- Header
- stdio.h
- Prototype
- int putchar(int c);
- Description
- The putchar function writes the character c to the standard output stream, stdout (usually the screen).
- Return Value
- Returns the character just written. EOF is returned if an error occurs.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fputc
getchar
putc - Example
/* Example for putchar */ #include <stdio.h> #include <stdlib.h> int main() { char *string = "This is an example of putchar()"; char *scan = string; while (*scan) { if (putchar(*scan) == EOF) exit(EXIT_FAILURE); scan++; } }
- Output
This is an example of putchar()
puts
- Header
- stdio.h
- Prototype
- int puts(const char *s);
- Description
- The puts function writes the string s to stdout (without the terminating 0), and then writes a newline to stdout.
- Return Value
- Returns a positive value if successful, otherwise EOF.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
fprintf
fputs
gets
- Example
/* Example for puts */ #include <stdio.h> #include <stdlib.h> int main() { char *str1 = "Display this string using puts()."; char *str2 = "Notice that puts() adds a newline to the end."; puts(str1); puts(str2); }
- Output
Display this string using puts(). Notice that puts() adds a newline to the end.
rewind
- Prototype
- void rewind(FILE *fp);
- Description
- rewind repositions the file pointer associated with a stream to the beginning of the file. This is equivalent to using fseek(fp, 0L, SEEK_SET), with the error flag for fp being cleared.
- Return Value
- None
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fseek
- Example
/* Example for rewind */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char *str1 = "String one, example string."; char *str2 = "xxxxxxxxxxxxx"; char buffer[80]; fp = fopen("file.dat", "w+"); fprintf(fp, "%s", str1); rewind(fp); fprintf(fp, "%s", str2); rewind(fp); fgets(buffer, 80, fp); printf("The value read back is: \"%s\"\n", buffer); return 0; }
- Output
The value read back is: "xxxxxxxxxxxxxxample string."
setbuf
- Header
- stdio.h
- Prototype
- void setbuf(FILE *stream, char *buffer);
- Description
- The setbuf function sets the buffering system for bytes read or written to a stream. If the buffer argument is NULL, the stream is unbuffered. If buffer is not NULL, it is taken to be a pointer to the buffer which is to be used for subsequent read and write calls. buffer must point to a character array of size BUFSIZ (defined in stdio.h). The user specified buffer is used then instead of the default system-allocated I/O buffer.
- Return Value
- None
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- setvbuf
- Example
/* Example for setbuf */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char buffer[BUFSIZ]; fp = fopen("file.dat", "w+"); setbuf (fp, buffer); printf("Stream has been set to buffer at %Fp\n", buffer); setbuf (fp, NULL); printf("Now stream buffering has been turned off\n"); }
- Output
Stream has been set to buffer at 0334: 15F0 Now stream buffering has been turned off
setvbuf
- Header
- stdio.h
- Prototype
- int setvbuf(FILE *fp, char *buf, int mode, size_t size);
- Description
- setvbuf specifies the type and size of a buffer used for a stream. In
addition to the function parameters the following global variable
affects the behaviour of this function: _okbigbuf, which is used
only in the T, S, and M memory models under MS-DOS. _okbigbuf
controls how buffers are allocated when buf is NULL. It is statically
initialized to 0 or 1 by the programmer (the library sets it to 1 by
default). If _okbigbuf is 1 and the memory model is T, S, or M:
setvbuf tries to allocate a buffer outside of the data segment. If
that fails, and size <= BUFSIZ, then setvbuf tries to allocate a
buffer within the data segment. A buffer that is outside the data
segment is marked by setting _IOBIGBUF in fp->_flags. If
_okbigbuf is 0 or the memory model is C or L: setvbuf tries to
allocate a buffer within the data segment. A buffer allocated by
setvbuf is flagged by _IOMYBUF being set in fp->_flags.
The function parameters are:
Argument Description fp Stream pointer that is already opened, but before any reads or writes have been done to the stream. buf Pointer to buffer, or NULL. If NULL, then setvbuf uses malloc or faralloc to allocate a buffer of size bytes. If buf is not NULL, it points to a buffer that setvbuf causes to be associated with the stream fp. mode Buffering mode. Use a value from the next table. size If buf is NULL, size is the number of bytes to allocate for the buffer. If buf is not NULL, size must be the number of bytes in the buffer that buf points to. mode can be one of these values:
Constant Description _IONBF No buffering. buf and size are ignored. Unbuffered I/O means data written is immediately passed to DOS. When data is read, exactly enough is read. _IOLBF Do line buffering. The actual I/O is performed when a newline is read or written. _IOFBF Full buffering. Data are read a full buffer at a time and are written only when the buffer is full. - Return Value
- If the call succeeds, the various fields that fp points to are updated to show the buffer and 0 is returned. If memory is insufficient for the buffer or if the mode parameter is invalid, non-zero is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- setbuf
- Example
/* Example of setvbuf */ #include <stdio.h> #include <stdlib.h> #define OURBUFSIZE 1024 int main() { FILE *fp; char buffer[OURBUFSIZE]; fp = fopen("file.dat", "w+"); setvbuf(fp,buffer,_IOFBF,OURBUFSIZE); printf("Stream buffering has been set to %d bytes at %Fp\n", OURBUFSIZE, buffer); setvbuf(fp, NULL, _IONBF, 0); printf("Now stream buffering has been turned off\n"); }
- Output
Stream buffering has been set to 1024 bytes at 0340: 1400 Now stream buffering has been turned off
stderr
- Header
- stdio.h
- Prototype
- extern FILE *stderr;
- Description
- stderr is a constant FILE pointer to the standard error stream, which is usually the console display. To print error messages that users must see, stderr is preferred over stdout. Due to file redirection, errors printed to stdout can end up in files, whereas stderr cannot be redirected.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_stdaux
stdin
stdout
_stdprn
stdin
- Header
- stdio.h
- Prototype
- extern FILE *stdin;
- Description
- stdin is a constant FILE pointer to the standard input stream, which is usually the keyboard or a redirected file. When the user redirects a file using the input redirection operator (<) or the pipe operator(|), the redirected data will arrive on the stdin stream. Filter programs, such as the DOS programs MORE and SORT, use stdin. Some functions use the stdin stream by default. Examples are getchar and scanf functions. getchar() is the same as getc(stdin), only shorter.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_stdaux
stderr
stdout
_stdprn
stdout
- Header
- stdio.h
- Prototype
- extern FILE *stdout;
- Description
- stdout is a constant FILE pointer to the standard output stream, which is usually the console
display or a redirected file. When a user redirects a file using the output redirection operator (>)
or the pipe operator (|), the redirected data will go out to the stdout stream. Filter programs,
such as DOS programs MORE and SORT, use stdout.
Some functions use the stdout stream by default. Examples are the putchar and printf. Function putchar('a') is the same as putc(stdout, 'a'), only shorter.
stdout and the other standard streams do not need to be opened or closed. They are set to their standard devices or redirected to files by the operating system before a program begins. All files are closed when a program termines.
A program that spawns a child process can use freopen to set the standard file pointers for the child process.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_stdaux
stderr
stdin
_stdprn
tmpfile
- Header
- stdio.h
- Prototype
- FILE *tmpfile(void);
- Description
- The tmpfile function creates a temporary file and returns a pointer to the stream associated with the file. The file is automatically deleted when it is closed or when the program terminates normally, as long as the current working directory does not change. The temporary file is opened in binary read/ write mode.
- Return Value
- Returns a stream pointer. If unsuccessful, a NULL pointer is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
_rmtmp
_tempnam
tmpnam - Example
/* Example for tmpfile */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char *str = "The quick brown dog jumped over the lazy cat"; char buf[128]; if ((fp = tmpfile ()) == NULL) { perror("Could not open temporary file"); exit(EXIT_FAILURE); } printf("Created temporary file\n"); printf("Writing to file: \"%s\"\n", str); fputs(str, fp); rewind(fp); fgets(buf, 128, fp); printf("Read from file: \"%s\"\n", buf); fclose(fp); }
- Output
Created temporary file Writing to file: "The quick brown dog jumped over the lazy cat" Read from file: "The quick brown dog jumped over the lazy cat"
tmpnam
- Header
- stdio.h
- Prototype
- char *tmpnam(const char *s);
- Description
- The tmpnam function generates a unique temporary filename that is valid, but not the same as, the name of any existing file. tmpnam generates a different string each time it is called, with a maximum defined by the macro TMP_MAX, found in stdio.h. The argument passed to tmpnam can be either a pointer to a buffer, which should be L_tmpnam characters, or a NULL pointer. The path of the file name will be P_tmpdir.
- Return Value
- If the argument passed to tmpnam is a pointer to a buffer, the temporary filename is placed in this buffer, and the return value is a pointer to this buffer. If the argument to tmpnam is a NULL pointer, the file name is placed in a static data area, overwritten at each call to tmpnam, and a pointer to this static data buffer is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- _tempnam
- Example
/* Example for tmpnam */ #include <stdio.h> #include <stdlib.h> int main() { char *name; if ((name = tmpnam (NULL)) == NULL) { perror("Unable to create temporary filename"); exit(EXIT_FAILURE); } printf("Temporary filename \"%s\" created.\n", name); free(name); }
ungetc
- Header
- stdio.h
- Prototype
- int ungetc(int c, FILE *fp);
- Description
- Puts character c back into the input stream fp, where it is read by the next input operation on the stream. If an fseek, fsetpos, or rewind is done between an ungetc and the next read, the character is lost. Only one character may be put back between reads. EOF cannot be placed back. If ungetc is called at the end of a file, ungetc clears the EOF indicator.
- Return Value
- c if successful; otherwise EOF if the character cannot be pushed back.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
-
getc
_ungetch - Example
/* Example for ungetc */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define delim "\n\r\t\v " int isdelim(int c) { return (strchr(delim, c) != NULL); } char *gettoken(FILE *fp) { static char tokbuf[128]; int c; int pos = 0; c = fgetc(fp); if (c == EOF) { if (!feof(fp)) perror("error reading from file"); return NULL; } if (isdelim(c)) do { c = fgetc(fp); } while ((isdelim (c)) && (c != EOF)); if (c != EOF) do { tokbuf[pos] = c; pos++; c = fgetc(fp); } while ((!isdelim(c)) && (c != EOF)); ungetc(c, fp); tokbuf[pos] = '\x00'; return tokbuf; } int main() { char fname[_MAX_PATH]; char *token; FILE *fp; printf("Enter filename: "); gets(fname); if ((fp = fopen(fname, "r")) == NULL) { perror("Unable to open file"); exit(EXIT_FAILURE); } do { token = gettoken(fp); printf("%s\n", token); } while (!feof(fp)); }
- Output
Enter filename: ungetc.c /* Example for ungetc */ #include <stdio.h> #include <stdlib.h> . . . = gettoken (fp); printf ("%s\n", token); } while (! feof(fp)); }
vprintf
- Header
- stdio.h
stdarg.h
varargs.h - Prototype
-
int vfprintf(FILE *stream, const char *format, va_list arg_ptr);
int vprintf(const char *format, va_list arg_ptr);
int _vsnprintf(char *buffer, size_t count, const char *format, va_list arg_ptr);
int vsprintf(char *buffer, const char *format, va_list arg_ptr);
- Description
-
These functions format and send data to the appropriate place.
vfprintf sends data to the file specified by stream;
vprintf sends data to standard output;
vsprintf and _vsnprintf send
data to the memory pointed to by buffer.
The _vsnprintf
function differs from vsprintf in that it writes not more than
count bytes to buffer.
These functions are similar to printf, fprintf and sprintf except the data are taken from the arg_ptr.
- Return Value
- The number of characters written, not counting the terminating null character. If an error occurs, a negative value is returned. For _vsnprintf, if the number of bytes to write exceeds count, then count bytes are written and -1 is returned.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fprintf
- Example
/* Example for vfprintf, vprintf */ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> void echo_err_printf(char *format, ...) { va_list arg_ptr; va_start(arg_ptr, format); vfprintf(stderr, format, arg_ptr); va_end(arg_ptr); va_start(arg_ptr, format); vprintf(format, arg_ptr); va_end(arg_ptr); } int main() { echo_err_printf("Error: %d\n", 12); }
- Output
Error: 12 Error: 12