C /C++标准库 – (stdio.h)

  • Post author:
  • Post category:其他


C 标准库 –

1. 库变量

序号 变量 描述
1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。
2 FILE 这是一个适合存储文件流信息的对象类型。
3 fpos_t 这是一个适合存储文件中任何位置的对象类型。

2. 宏定义

下面是头文件 stdio.h 中定义的宏:

序号 描述
1 NULL 这个宏是一个空指针常量的值
2 _IOFBF、_IOLBF 和 _IONBF 这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。
3 BUFSIZ 这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。
4 EOF End-of-File
5 FOPEN_MAX 这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。
6 FILENAME_MAX 这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。
7 L_tmpnam 这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。
8 SEEK_CUR、SEEK_END 和 SEEK_SET 这些宏是在These macros are used in the fseek 函数中使用,用于在一个文件中定位不同的位置。
9 TMP_MAX 这个宏是 tmpnam 函数可生成的独特文件名的最大数量。
10 stderr、stdin 和 stdout 这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。

3. 库函数

3.1 Operations on files:

序号 函数 描述 补充描述
1 int remove ( const char * filename ); Deletes the file whose name is specified in filename.(永久删除文件) 操作成功,返回0,否则返回非零
2 int rename ( const char * oldname, const char * newname ); Changes the name of the file or directory specified by oldname to newname. 同上
3 FILE * tmpfile ( void ); 以二进制更新模式(wb+)创建临时文件 成功,返回临时文件, failure, NULL is returned.
4 char * tmpnam ( char * str ); 生成并返回一个有效的临时文件名,该文件名之前是不存在的。 成功,返回文件名,失败,返回NULL

3.2 File access:

序号 函数 描述 补充描述
1 int fclose ( FILE * stream ); 关闭流 stream。刷新所有的缓冲区。 success,return 0,fail,return EOF
2 FILE * fopen ( const char * filename, const char * mode ); 使用给定的模式 mode 打开 filename 所指向的文件 success,return FILE*,fail,return NULL
3 FILE * freopen ( const char * filename, const char * mode, FILE * stream ); 把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。 同上
4 int fflush ( FILE * stream ); 刷新流 stream 的输出缓冲区。 成功,返回0,失败返回EOF
5 void setbuf ( FILE * stream, char * buffer ); 自定义控制流的缓冲
6 int setvbuf ( FILE * stream, char * buffer, int mode, size_t size ); 自定义缓冲流及缓冲模式 成功,返回0,失败返回非零

3.3 Formatted input/output:

序号 标签 函数原语 描述 补充描述
1 fprintf int fprintf ( FILE * stream, const char * format, … ); 格式化输出到指定流 成功,返回写入的字符总数,否则返回负数
2 printf int printf ( const char * format, … ); 格式化输出到标准输出流stdout 成功,返回写入的字符总数,否则返回负数
3 sprintf int sprintf ( char * str, const char * format, … ); 格式化输出到字符串缓冲区,并自动在末尾添加字符串结尾标识符’\0’ 成功,返回写入的字符总数(不包括自动添加的’\0’),否则,返回负数
4
snprintf

(C99)
int snprintf ( char * s, size_t n, const char * format, … ); 格式化输出到字符串缓冲区,并自动在末尾添加字符串结尾标识符’\0’(设置单词最大写入字符个数) 成功,返回写入的字符总数(不包括自动添加的’\0’),否则,返回负数
5 fscanf int fscanf ( FILE * stream, const char * format, … ); Read formatted data from stream 成功,返回成功填充的变量总数,失败返回EOF
6 scanf int scanf ( const char * format, … ); Read formatted data from stdin 同上
7 sscanf int sscanf ( const char * s, const char * format, …); Read formatted data from string 同上

可变参数操作函数:

序号 标签 描述
1 vfprintf Write formatted data from variable argument list to stream
2 vfscanf Read formatted data from stream into variable argument list
3 vprintf Print formatted data from variable argument list to stdout
4 vscanf Read formatted data into variable argument list
5 vsnprintf Write formatted data from variable argument list to sized buffer
6 vsprintf Write formatted data from variable argument list to string
7 vsscanf Read formatted data from string into variable argument list

3.4 Character input/output:

序号 标签 函数原语 描述 补充描述
1
fgetc
int fgetc ( FILE * stream ); Get character from stream 成功,返回字符的ASCII码,否则返回EOF
2
getc
int getc ( FILE * stream ); 同上 getc and fgetc are equivalent, except that

getc

may be implemented as a

macro

in some libraries
3 getchar int getchar ( void ); Get character from stdin 成功,返回字符的ASCII码,否则返回EOF
4
fgets
char * fgets ( char * str, int num, FILE * stream ); Get string from stream 从fp指向的文件中读取下一个输入行(包括换行符),并将它存放在字符数组中,最多可以读取maxline-1个字符,读取的行以’\0’结尾,

不安全
5 gets char * gets ( char * str ); Get string from stdin 读取字符串,欲换行符’\n’结束,并删除换行符,用fgets代替
6
fputc
int fputc ( int character, FILE * stream ); Write character to stream 成功,返回写入的字符,失败,返回EOF
7
putc
int putc ( int character, FILE * stream ); 同上 putc and fputc are equivalent, except that

putc

may be implemented as a

macro

in some libraries
8 putchar int putchar ( int character ); Write character to stdout 同上
9
fputs
int fputs ( const char * str, FILE * stream ); Write string to stream 成功,返回非负数,失败,返回EOF
10
puts
int puts ( const char * str ); Write string to stdout(每行末尾自动添加换行符) 同上
11
ungetc
int ungetc ( int character, FILE * stream ); 使字符c(转化为uchar型)被压入到指定输入流 成功,返回压入的字符,失败,返回EOF

3.5 Direct input/output:

序号 标签 函数原语 描述 补充描述
1 fread size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); Read block of data from stream 成功,返回读取的元素总数,失败,返回0(可以用feof或ferror工具判断是出现错误还是到文件末尾)
2 fwrite size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); Write block of data to stream 返回实际写入元素的个数,正常情况返回值等于count

3.6 File positioning:

序号 标签 函数原语 描述 补充描述
1 fgetpos int fgetpos ( FILE * stream, fpos_t * pos ); Get current position in stream 成功,返回0 ,否则返回非零
2 fsetpos int fsetpos ( FILE * stream, const fpos_t * pos ); 根据*pos中的位置设置当前文件的位置 同上
3 fseek int fseek ( FILE * stream, long int offset, int origin ); 重定位文件位置以便随机stream流 同上
4 ftell long int ftell ( FILE * stream ); 返回当前流中的位置(同fgetpos) 但其返回long int(小型文件),大型文件用fgetpos
5 rewind void rewind ( FILE * stream ); 把流重置为起始位置 相当于 fseek(stream,0L,SEEK_SET)

3.7 Error-handling:

序号 标签 函数原语 描述 补充描述
1 clearerr void clearerr ( FILE * stream ); Resets both the error and the eof indicators of the stream
2 feof int feof ( FILE * stream ); 检测是否到达文件尾 到达结尾,返回非零,否则返回0
3 ferror int ferror ( FILE * stream ); 返回流的错误状态 若错误标志被设置,返回非零,否则返回0
4 perror void perror ( const char * str ); 打印错误信息至stderr

参考:

http://www.cplusplus.com/reference/cstdio/


《C标准库》,P.J. Plauger 著

《C语言参考手册》,Samuel P. Harbison III 等著



版权声明:本文为u010177286原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。