stdio.h

維基百科,自由的百科全書

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]

參見[編輯]

參考文獻[編輯]

  1. ^ Kernighan, Brian; Pike, Rob. The UNIX Programming Environment. Englewood Cliffs: Prentice Hall. 1984: 200. 
  2. ^ Korn, David G.; Vo, Kiem-Phong. SFIO: Safe/Fast String/File IO. Proc. Summer USENIX Conf. 1991. 

外部連結[編輯]