File input/output - cppreference.com

From cppreference.com

The

<stdio.h>

header provides generic file operation support and supplies functions with narrow character input/output capabilities.

The

<wchar.h>

header supplies functions with wide character input/output capabilities.

I/O streams are denoted by objects of type

FILE

that can only be accessed and manipulated through pointers of type FILE*. Each stream is associated with an external physical device (file, standard input stream, printer, serial port, etc).

Types

object type, capable of holding all information needed to control a C I/O stream
(typedef)

[edit]

non-array complete object type, capable of uniquely specifying a position and multibyte parser state in a file
(typedef)

[edit]

Predefined standard streams

expression of type FILE* associated with the input stream
expression of type FILE* associated with the output stream
expression of type FILE* associated with the error output stream
(macro constant)

[edit]

Functions

File access Defined in header

<stdio.h>

fopenfopen_s

(C11)

opens a file
(function)

[edit]

freopenfreopen_s

(C11)

open an existing stream with a different name
(function)

[edit]

fclose

closes a file
(function)

[edit]

fflush

synchronizes an output stream with the actual file
(function)

[edit]

setbuf

sets the buffer for a file stream
(function)

[edit]

setvbuf

sets the buffer and its size for a file stream
(function)

[edit]

Defined in header

<wchar.h>

fwide

(C95)

switches a file stream between wide character I/O and narrow character I/O
(function)

[edit]

Direct input/output Defined in header

<stdio.h>

fread

reads from a file
(function)

[edit]

fwrite

writes to a file
(function)

[edit]

Unformatted input/output Narrow characterDefined in header

<stdio.h>

fgetcgetc

gets a character from a file stream
(function)

[edit]

fgets

gets a character string from a file stream
(function)

[edit]

fputcputc

writes a character to a file stream
(function)

[edit]

fputs

writes a character string to a file stream
(function)

[edit]

getchar

reads a character from

stdin

(function)

[edit]

getsgets_s

(removed in C11)(C11)

reads a character string from

stdin

(function)

[edit]

putchar

writes a character to

stdout

(function)

[edit]

puts

writes a character string to

stdout

(function)

[edit]

ungetc

puts a character back into a file stream
(function)

[edit]

Wide characterDefined in header

<wchar.h>

fgetwcgetwc

(C95)

gets a wide character from a file stream
(function)

[edit]

fgetws

(C95)

gets a wide string from a file stream
(function)

[edit]

fputwcputwc

(C95)

writes a wide character to a file stream
(function)

[edit]

fputws

(C95)

writes a wide string to a file stream
(function)

[edit]

getwchar

(C95)

reads a wide character from

stdin

(function)

[edit]

putwchar

(C95)

writes a wide character to

stdout

(function)

[edit]

ungetwc

(C95)

puts a wide character back into a file stream
(function)

[edit]

Formatted input/output Narrow characterDefined in header

<stdio.h>

scanffscanfsscanfscanf_sfscanf_ssscanf_s

(C11)(C11)(C11)

reads formatted input from

stdin

, a file stream or a buffer
(function)

[edit]

vscanfvfscanfvsscanfvscanf_svfscanf_svsscanf_s

(C99)(C99)(C99)(C11)(C11)(C11)

reads formatted input from

stdin

, a file stream or a buffer
using variable argument list
(function)

[edit]

printffprintfsprintfsnprintfprintf_sfprintf_ssprintf_ssnprintf_s

(C99)(C11)(C11)(C11)(C11)

prints formatted output to

stdout

, a file stream or a buffer
(function)

[edit]

vprintfvfprintfvsprintfvsnprintfvprintf_svfprintf_svsprintf_svsnprintf_s

(C99)(C11)(C11)(C11)(C11)

prints formatted output to

stdout

, a file stream or a buffer
using variable argument list
(function)

[edit]

Wide characterDefined in header

<wchar.h>

wscanffwscanfswscanfwscanf_sfwscanf_sswscanf_s

(C95)(C95)(C95)(C11)(C11)(C11)

reads formatted wide character input from

stdin

, a file stream or a buffer
(function)

[edit]

vwscanfvfwscanfvswscanfvwscanf_svfwscanf_svswscanf_s

(C99)(C99)(C99)(C11)(C11)(C11)

reads formatted wide character input from

stdin

, a file stream
or a buffer using variable argument list
(function)

[edit]

wprintffwprintfswprintfwprintf_sfwprintf_sswprintf_ssnwprintf_s

(C95)(C95)(C95)(C11)(C11)(C11)(C11)

prints formatted wide character output to

stdout

, a file stream or a buffer
(function)

[edit]

vwprintfvfwprintfvswprintfvwprintf_svfwprintf_svswprintf_svsnwprintf_s

(C95)(C95)(C95)(C11)(C11)(C11)(C11)

prints formatted wide character output to

stdout

, a file stream
or a buffer using variable argument list
(function)

[edit]

File positioning Defined in header

<stdio.h>

ftell

returns the current file position indicator
(function)

[edit]

fgetpos

gets the file position indicator
(function)

[edit]

fseek

moves the file position indicator to a specific location in a file
(function)

[edit]

fsetpos

moves the file position indicator to a specific location in a file
(function)

[edit]

rewind

moves the file position indicator to the beginning in a file
(function)

[edit]

Error handling Defined in header

<stdio.h>

clearerr

clears errors
(function)

[edit]

feof

checks for the end-of-file
(function)

[edit]

ferror

checks for a file error
(function)

[edit]

perror

displays a character string corresponding of the current error to

stderr

(function)

[edit]

Operations on files Defined in header

<stdio.h>

remove

erases a file
(function)

[edit]

rename

renames a file
(function)

[edit]

tmpfiletmpfile_s

(C11)

returns a pointer to a temporary file
(function)

[edit]

tmpnamtmpnam_s

(C11)

returns a unique filename
(function)

[edit]

Macro constants

EOF

integer constant expression of type int and negative value
(macro constant)FOPEN_MAX

maximum number of files that can be open simultaneously
(macro constant)FILENAME_MAX

size needed for an array of char to hold the longest supported file name
(macro constant)_PRINTF_NAN_LEN_MAX

(C23)

the maximum number of characters output for any (possibly negated) NaN value
(macro constant)BUFSIZ

size of the buffer used by

setbuf

(macro constant)_IOFBF_IOLBF_IONBF

indicates the buffering mode (fully buffered / line buffered / unbuffered) to be set by

setvbuf

(macro constant)SEEK_SETSEEK_CURSEEK_END

indicates the offset origin (beginning / current position / end) to be used by

fseek

(macro constant)TMP_MAXTMP_MAX_S

(C11)

maximum number of unique filenames that can be generated by

tmpnam

/ tmpnam_s
(macro constant)L_tmpnamL_tmpnam_s

(C11)

size needed for an array of char to hold the result of

tmpnam

/ tmpnam_s
(macro constant)References

C23 standard (ISO/IEC 9899:2024):

7.21 Input/output <stdio.h> (p: TBD)

7.29 Extended multibyte and wide character utilities <wchar.h> (p: TBD)

7.31.11 Input/output <stdio.h> (p: TBD)

7.31.16 Extended multibyte and wide character utilities <wchar.h> (p: TBD)

K.3.5 Input/output <stdio.h> (p: TBD)

C17 standard (ISO/IEC 9899:2018):

7.21 Input/output <stdio.h> (p: TBD)

7.29 Extended multibyte and wide character utilities <wchar.h> (p: TBD)

7.31.11 Input/output <stdio.h> (p: TBD)

7.31.16 Extended multibyte and wide character utilities <wchar.h> (p: TBD)

K.3.5 Input/output <stdio.h> (p: TBD)

C11 standard (ISO/IEC 9899:2011):

7.21 Input/output <stdio.h> (p: 296-339)

7.29 Extended multibyte and wide character utilities <wchar.h> (p: 402-446)

7.31.11 Input/output <stdio.h> (p: 456)

7.31.16 Extended multibyte and wide character utilities <wchar.h> (p: 456)

K.3.5 Input/output <stdio.h> (p: 586-603)

C99 standard (ISO/IEC 9899:1999):

7.19 Input/output <stdio.h> (p: 262-305)

7.24 Extended multibyte and wide character utilities <wchar.h> (p: 348-392)

7.26.9 Input/output <stdio.h> (p: 402)

7.26.12 Extended multibyte and wide character utilities <wchar.h> (p: 402)

C89/C90 standard (ISO/IEC 9899:1990):

4.9 INPUT/OUTPUT <stdio.h>

4.13.6 Input/output <stdio.h>

See also