C标准函数库
下载吧,值得收藏
本文包括大部分C标准库函数,但没有列出一些用途有限的函数以及某些可以简单的从其他函数合成的函数,也没有包含多字节和本地化函数。
标准库中的各个函数、类型以及宏分别在以下标准头文件中说明:
1 输入与输出
头文件
#include
FILE *fopen(const char *filename, const char *mode); 返回:成功为FILE指针,失败为NULL
打开以filename所指内容为名字的文件,返回与之关联的流。 mode决定打开的方式,可选值如下:
\\\\\\\\\
打开文本文件用于读
创建文本文件用于写,并删除已存在的内容(如果有的话) 添加;打开或创建文本文件用于在文件末尾写 打开二进制文件用于读
创建二进制文件用于写,并删除已存在的内容(如果有的话) 添加;打开或创建二进制文件用于在文件末尾写 打开文本文件用于更新(即读和写)
创建文本文件用于更新,并删除已存在的内容(如果有的话) 添加;打开或创建文本文件用于更新和在文件末尾写
\或\打开二进制文件用于更新(即读和写)
\或\创建二进制文件用于更新,并删除已存在的内容(如果有的话) \或\添加;打开或创建二进制文件用于更新和在文件末尾写
后六种方式允许对同一文件进行读和写,要注意的是,在写操作和读操作的交替过程中,必须调用fflush()或文件定位函数如fseek()、fsetpos()、rewind()等。 文件名filename的长度最大为FILENAME_MAX个字符,一次最多可打开FOPEN_MAX个文件(在
1.1.2 freopen
#include
FILE *freopen(const char *filename, const char *mode, FILE *stream);
返回:成功为stream,失败为NULL
以mode指定的方式打开文件filename,并使该文件与流stream相关联。freopen()先尝试关闭与stream关联的文件,不管成功与否,都继续打开新文件。
该函数的主要用途是把系统定义的标准流stdin、stdout、stderr重定向到其他文件。
1.1.3 fflush
#include
int fflush(FILE *stream);
返回:成功为0,失败返回EOF
对输出流(写打开),fflush()用于将已写到缓冲区但尚未写出的全部数据都写到文件中;对输入流,其结果未定义。如果写过程中发生错误则返回EOF,正常则返回0。 fflush(NULL)用于刷新所有的输出流。
程序正常结束或缓冲区满时,缓冲区自动清仓。
1.1.4 fclose
#include
int flcose(FILE *stream);
返回:成功为0,失败返回EOF
刷新stream的全部未写出数据,丢弃任何未读的缓冲区内的输入数据并释放自动分配的缓冲区,最后关闭流。
1.1.5 remove
#include
int remove(const char *filename); 返回:成功为0,失败为非0值 删除文件filename。
1.1.6 rename
#include
int rename(const char *oldfname, const char *newfname); 返回:成功为0,失败为非0值
把文件的名字从oldfname改为newfname。
1.1.7 tmpfile
#include
返回:成功为流指针,失败为NULL
以方式\创建一个临时文件,并返回该流的指针,该文件在被关闭或程序正常结束时被自动删除。
1.1.8 tmpnam #include
char *tmpnam(char s[L_tmpnam]);
返回:成功为非空指针,失败为NULL
若参数s为NULL(即调用tmpnam(NULL)),函数创建一个不同于现存文件名字的字符串,并返回一个指向一内部静态数组的指针。
若s非空,则函数将所创建的字符串存储在数组s中,并将它作为函数值返回。s中至少要有L_tmpnam个字符的空间。
tmpnam函数在每次被调用时均生成不同的名字。在程序的执行过程中,最多只能确保生成TMP_MAX个不同的名字。注意tmpnam函数只是用于创建一个名字,而不是创建一个文件。
1.1.9 setvbuf
#include
int setvbuf(FILE *stream, char *buf, int mode, size_t size); 返回:成功返回0,失败返回非0
控制流stream的缓冲区,这要在读、写以及其他任何操作之前设置。
如果buf非空,则将buf指向的区域作为流的缓冲区,如果buf为NULL,函数将自行分配一个缓冲区。
size决定缓冲区的大小。
mode指定缓冲的处理方式,有如下值: _IOFBF,进行完全缓冲;
_IOLBF,对文本文件表示行缓冲; _IOLNF,不设置缓冲。
1.1.10 setbuf
#include
void setbuf(FILE *stream, char *buf);
如果buf为NULL,则关闭流stream的的缓冲区;否则setbuf函数等价于: (void)setvbuf(stream, buf, _IOFBF, BUFSIZ)。 注意自定义缓冲区的尺寸必须为BUFSIZ个字节。
1.2 格式化输出 1.2.1 fprintf
#include
int fprintf(FILE *stream, const char *format,…); 返回:成功为实际写出的字符数,出错返回负值
按照format说明的格式把变元表中变元内容进行转换,并写入stream指向的流。 格式化字符串由两种类型的对象组成:普通字符(它们被拷贝到输出流)与转换规格说明(它们决定变元的转换和输出格式)。每个转换规格说明均以字符%开头,以转换字符结束。如果%后面的字符不是转换字符,那么该行为是未定义的。 转换字符列表如下: 字 符 说明 d, i o x, X u
int;有符号十进制表示法
unsigned int;无符号八进制表示法(无前导0)
unsigned int;无符号十六进制表示法(无前导0X和0x),对0x用abcdef,对0X用ABCDEF
unsigned int;无符号十进制表示法