Content deleted Content added
Xose.vazquez (talk | contribs) |
No edit summary Tags: Mobile edit Mobile app edit iOS app edit App section source |
||
(37 intermediate revisions by 24 users not shown) | |||
Line 1:
{{short description|Input/output functionality in the C programming language}}
{{C Standard Library}}
The [[C (programming language)|C programming language]] provides many [[standard library]] [[subroutine|functions]] for [[computer file|file]] [[input/output|input and output]]. These functions make up the bulk of the [[C standard library]] [[header file|header]] {{mono|<'''stdio.h'''>}}.<ref>{{cite book
The I/O functionality of C is fairly low-level by modern standards; C abstracts all file operations into operations on [[stream (computing)|stream]]s of [[byte]]s, which may be "input streams" or "output streams". Unlike some earlier programming languages, C has no direct support for [[random access|random-access]] data files; to read from a record in the middle of a file, the programmer must create a stream, [[fseek|seek]] to the middle of the file, and then read bytes in sequence from the stream.
Line 8 ⟶ 9:
==Overview==
This library uses what are called streams to operate with physical devices such as keyboards, printers, terminals or with any other type of files supported by the system. Streams are an abstraction to interact with these in a uniform way. All streams have similar properties independent of the individual characteristics of the physical media they are associated with.<ref>{{Cite web |title=(stdio.h) - C++ Reference |url=http://www.cplusplus.com/reference/cstdio/ |access-date=July 25, 2021 |website=C++ |language=en-US}}</ref>
===Functions===
Most of the C file input/output functions are defined in {{mono|<stdio.h>}} (or in the [[C++]] header {{mono|cstdio}}, which contains the standard C functionality but in the {{mono|std}} [[namespace]]).
{| class="wikitable"
Line 20 ⟶ 21:
! Description
|-
! rowspan=
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|fopen}}[https://en.cppreference.com/w/c/io/fopen fopen]
| Opens a file (with a non-Unicode filename on Windows and possible UTF-8 filename on Linux)
|-
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|popen}}[https://man7.org/linux/man-pages/man3/popen.3.html popen]
| opens a process by creating a pipe, forking, and invoking the shell
|-
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|freopen}}[https://en.cppreference.com/w/c/io/freopen freopen]
Line 32 ⟶ 36:
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|fclose}}[https://en.cppreference.com/w/c/io/fclose fclose]
| Closes a file
|-
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|pclose}}[https://man7.org/linux/man-pages/man3/pclose.3p.html pclose]
| closes a stream
|-
| colspan=2 style="text-align:center;font-family:monospace" | {{anchor|setbuf}}[https://en.cppreference.com/w/c/io/setbuf setbuf]
Line 92 ⟶ 99:
|-
| style="font-family:monospace" | {{anchor|vscanf|vfscanf|vsscanf}}[https://en.cppreference.com/w/c/io/vscanf vscanf]<br />[https://en.cppreference.com/w/c/io/vfscanf vfscanf]<br />[https://en.cppreference.com/w/c/io/vsscanf vsscanf]
| style="font-family:monospace" | {{anchor|vwscanf|vfwscanf|
| Reads formatted input byte/{{mono|wchar_t}} from stdin,<br />a file stream or a buffer using variable argument list
|-
Line 99 ⟶ 106:
| Prints formatted byte/{{mono|wchar_t}} output to stdout,<br />a file stream or a buffer
|-
| style="font-family:monospace" | {{anchor|vprintf|vfprintf|
| style="font-family:monospace" | {{anchor|vwprintf|vfwprintf|vswprintf}}[https://en.cppreference.com/w/c/io/vwprintf vwprintf]<br />[https://en.cppreference.com/w/c/io/vfwprintf vfwprintf]<br />[https://en.cppreference.com/w/c/io/vfwprintf vswprintf]
| Prints formatted byte/{{mono|wchar_t}} output to stdout,<br />a file stream, or a buffer using variable argument list
Line 157 ⟶ 164:
| A negative integer of type {{mono|int}} used to indicate end-of-file conditions
|-
! style="font-family:monospace" | {{Anchor|BUFSIZ}} [http://c-p-p.net/c/stdio.h/bufsiz BUFSIZ]
| An integer which is the size of the buffer used by the {{mono|setbuf()}} function
|-
Line 214 ⟶ 221:
===Member types===
Data types defined in the {{mono|<stdio.h>}} header include:
*{{mono|[https://en.cppreference.com/w/c/io FILE]}} – also known as a {{anchor|file handle}}'''file [[Handle (computing)|handle]]''' or a '''{{Visible anchor|FILE pointer}}''', this is an [[opaque pointer
**platform-specific identifier of the associated I/O device, such as a [[file descriptor]]
**the buffer
Line 240 ⟶ 247:
int main(void) {
char buffer[5];
size_t len;
FILE* fp = fopen("myfile", "rb");
Line 247 ⟶ 255:
}
▲ fputs("An error occurred while reading the file.\n", stderr);
▲ return EXIT_FAILURE;
}▼
buffer[i] = rc;▼
}
fclose(fp);
printf("The bytes read were
for (int i = 0; i < len; ++i) {
putchar('\n');
return EXIT_SUCCESS;
Line 267 ⟶ 274:
==Alternatives to stdio{{anchor|Sfio}}==
{{Redirect|Sfio|other uses of "SFIO"|SFIO (disambiguation)}}
Several alternatives to {{mono|stdio}} have been developed. Among these
▲Several alternatives to {{mono|stdio}} have been developed. Among these is the [[Input/output (C++)|C++ {{mono|iostream}}]] library, part of the [[ISO C++|ISO C++ standard]]. ISO C++ still requires the {{mono|stdio}} functionality.
Other alternatives include the
==See also==
Line 283 ⟶ 289:
==External links==
{{wikibooks|C Programming|C file input and output|C Programming/C Reference}}
*{{Commons category-inline}}
{{CProLang}}
▲{{use dmy dates|date=January 2012}}
{{DEFAULTSORT:C file input output}}
|