首页 > 代码库 > 头文件<stdio.h>

头文件<stdio.h>

 

头文件<stdio.h>声明了三种类型,一些宏和很多执行输入输出的函数。
1、类型:
FILE 它是一个对象类型,可以记录控制流需要的所有信息,包括它的文件定位符、指向相关的缓冲的指针、记录是否发生了读/写错误的错误指示符和记录文件是否结束的文件结束符。fpos_t 它是一个对象类型,可以唯一指定文件中的每一个位置所需的所有信息。
size_t 这是无符号整数类型,它是sizeof关键字的结果。
2、宏:
NULL 这个宏是一个空指针常量的值。
_IOFBF、_IOLBF、IONBF 这些宏扩展了带有特定值的整形常量表达式(它们展开为具有不同值的整数常量表达式),适合作为函数setvbuf的第三个参数使用。
BUFSIZ 这个宏是一个整数,该整数代表了setbuf函数使用的缓冲区大小。
EOF 这个宏是一个表示已经到达文件结束的负整数。
FOPEN_MAX 这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。
FILENAME_MAX 这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。
L_tmpnam 这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。
SEEK_CUR、SEEK_END 和 SEEK_SET 它们展开为具有不同值得整数常量表达式,适合作为fseek函数的第三个参数使用。
TMP_MAX 这个宏是 tmpnam 函数可生成的独特文件名的最大数量。
stderr、stdin 和 stdout 这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。
3、函数:
3.1函数remove
int remove(const char *filename);
说明:删除给定的文件名 filename,以便它不再被访问。
返回值:成功返回0;失败返回非0,在新名字的文件存在的情况下,这个文件的名字任是原始的名字。

3.2函数tmpfile
FILE *tmpfile(void);
说明:以二进制更新模式(wb+)创建临时文件。
返回值:如果成功返回一个指向被创建的临时文件的流指针;如果文件未被创建,则返回NULL
3.3函数tmpname
char *tmpname(char *s);
说明:生成并返回一个有效的临时文件名,该文件名之前是不存在的。
参数:s是一个指向字符数组的指针,其中,临时文件名将被存储为 C 字符串。
返回值:一个指向 C 字符串的指针,该字符串存储了临时文件名。如果 str 是一个空指针,
则该指针指向一个内部缓冲区,缓冲区在下一次调用函数时被覆盖。如果 str 不是一个空指针
,则返回 str。如果函数未能成功创建可用的文件名,则返回一个空指针。
3.4函数fclose
int fclose(FILE *stream);
说明:关闭流 stream。刷新所有的缓冲区。
参数:这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。
返回值:如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。
3.5函数fflush
int fflush(FILE *stream);
说明:刷新流 stream 的输出缓冲区。
参数:这是指向 FILE 对象的指针,该 FILE 对象指定了一个缓冲流。
返回值:如果成功,该函数返回零值。如果发生错误,则返回 EOF,且设置错误标识符(即
feof)。
3.6函数fopen
FILE *fopen(const char *filename,const char *mode);
说明:使用给定的模式 mode 打开 filename 所指向的文件。
参数:filename是 C 字符串,包含了要打开的文件名称。
mode 是 C 字符串,包含了文件访问模式。
"r" 打开一个用于读取的文件。该文件必须存在。
"w" 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除
已有文件的内容,文件被视为一个新的空文件。
"a" 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文
件。
"r+" 打开一个用于更新的文件,可读取也可写入。该文件必须存在。
"w+" 创建一个用于读写的空文件。
"a+" 打开一个用于读取和追加的文件。
返回值:该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
3.7函数freopen
FILE *freopen(const char *filename,const char *mode,FILE *stream);
说明:把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件

参数:filename是 C 字符串,包含了要打开的文件名称。mode是 C 字符串,包含了文件访问
模式。
返回值:如果文件成功打开,则函数返回一个指针,指向用于标识流的对象。否则,返回空指
针。
3.8函数setbuf
void setbuf(FILE *stream,char *buf);
说明:定义流 stream 应如何缓冲。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了一个打开的流。buf是分配给用户
的缓冲,它的长度至少为 BUFSIZ 字节,BUFSIZ 是一个宏常量,表示数组的长度。
返回值:该函数不返回任何值。
3.9函数setvbuf
int setvbuf(FILE *stream,char *buf,int mode,size_t size);
说明:定义流 stream 应如何缓冲。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了一个打开的流。buffer是分配给
用户的缓冲。如果设置为 NULL,该函数会自动分配一个指定大小的缓冲。size是缓冲的大小,
以字节为单位。mode 指定了文件缓冲的模式
_IOFBF 全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入
且缓冲为空时被填充。
_IOLBF 行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。
对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。
_IONBF 无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。
返回值:如果成功,则该函数返回 0,否则返回非零值。
3.10函数fprintf
int fprintf(FILE *stream,const char *format,...);
说明:发送格式化输出到流 stream 中。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format是 C 字符串,包含了
要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附
加参数中指定的值替换,并按需求进行格式化。
返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
3.11函数fscanf
int fscanf(FILE *stream,const char *format,...);
说明:从流 stream 读取格式化输入。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format -- 这是 C 字符串,
包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
返回 EOF。
3.12函数printf
int printf(const char *format,...);
说明:发送格式化输出到标准输出 stdout。
参数:format是字符串,包含了要被写入到标准输出 stdout 的文本。
返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
3.13函数scanf
int scanf(const char *format,...);
说明:从标准输入 stdin 读取格式化输入。
参数:format是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和
format 说明符。
返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
返回 EOF。
3.14函数sprintf
int sprintf(char *s,const char *format,...);
说明:发送格式化输出到字符串。
参数:s是指向一个字符数组的指针,该数组存储了 C 字符串。format是字符串,包含了要被
写入到字符串 str 的文本。
返回值:如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果
失败,则返回一个负数。
3.15函数sscanf
int sscanf(consst char *s,const char *format,...);
说明:从字符串读取格式化输入。
参数:str是 C 字符串,是函数检索数据的源。format -- 这是 C 字符串,包含了以下各项中
的一个或多个:空格字符、非空格字符 和 format 说明符。
返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
返回 EOF。
3.16函数vfprintf
int vfprintf(FILE *stream,const char *format,va_list arg);
说明:使用参数列表发送格式化输出到流 stream 中。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format是 C 字符串,包含了
要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附
加参数中指定的值替换,并按需求进行格式化。
返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
3.17函数vprintf
int vprintf(const char *format,va_list arg);
说明:使用参数列表发送格式化输出到标准输出 stdout。
参数:format -- 这是字符串,包含了要被写入到标准输出 stdout 的文本。arg是一个表示可
变参数列表的对象。这应被 <stdarg> 中定义的 va_start 宏初始化。
返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
3.18函数vsprintf
int vsprintf(char *s,const char *format,va_list arg);
说明:使用参数列表发送格式化输出到字符串。
参数:str是指向一个字符数组的指针,该数组存储了 C 字符串。ormat是字符串,包含了要被
写入到字符串 str 的文本。arg是一个表示可变参数列表的对象。
返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
3.19函数fgetc
int fgetc(FILE *stream);
说明:从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
发生读错误,则返回 EOF。
3.20函数fgets
char *fgets(char *s,int n,FILE *stream);
说明:从指定的流 stream 读取一行,并把它存储在 s 所指向的字符串内。当读取 (n-1) 个
字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
参数:s是指向一个字符数组的指针,该数组存储了要读取的字符串。n是要读取的最大字符数
(包括最后的空字符)。通常是使用以 s 传递的数组长度。stream是指向 FILE 对象的指针,
该 FILE 对象标识了要从中读取字符的流。
返回值:如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符
,str 的内容保持不变,并返回一个空指针。
如果发生错误,返回一个空指针。
3.21函数fputc
int fputc(int c,FILE *stream);
说明:把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标
识符往前移动。
参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
指针,该 FILE 对象标识了要被写入字符的流。
返回值:如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误
标识符。
3.22函数fputs
int fputs(const char *s,FILE *stream);
说明:把字符串写入到指定的流 stream 中,但不包括空字符。
参数:s是一个数组,包含了要写入的以空字符终止的字符序列。stream是指向 FILE 对象的指
针,该 FILE 对象标识了要被写入字符串的流。
返回值:该函数返回一个非负值,如果发生错误则返回 EOF。
3.23函数getc
int getc(FILE *stream);
说明:从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
发生读错误,则返回 EOF。
3.24函数getchar
int getchar(void);
说明:从标准输入 stdin 获取一个字符(一个无符号字符)。
返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
发生读错误,则返回 EOF。
3.25函数gets
char *gets(char *s);
说明:从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符
时,或者到达文件末尾时,它会停止,具体视情况而定。
参数:str是指向一个字符数组的指针,该数组存储了 C 字符串。
返回值:如果成功,该函数返回 str。如果发生错误或者到达文件末尾时还未读取任何字符,
则返回 NULL。
3.26函数putc
int putc(int c,FILE *stream);
说明:把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标
识符往前移动。
参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
指针,该 FILE 对象标识了要被写入字符的流。
返回值:该函数以无符号 c 强制转换为 int 的形式返回写入的字符,如果发生错误则返回
EOF。
3.27函数putchar
int putchar(int c);
说明:把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。
返回值:该函数以无符号 c强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF

3.28函数puts
int puts(const char *s);
说明:把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加
到输出中。
参数:str是要被写入的 C 字符串。
返回值:如果成功,该函数返回一个非负值,如果发生错误则返回 EOF。
3.29函数ungetc
int ungetc(int c,FILE *stream);
说明:把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到
的字符。
参数:c是要被推入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
指针,该 FILE 对象标识了输入流。
返回值:如果成功,则返回被推入的字符,否则返回 EOF,且流 stream 保持不变。
3.30函数fread
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
说明:从给定流 stream 读取数据到 ptr 所指向的数组中。
参数:ptr是指向带有最小尺寸 size*nmemb 字节的内存块的指针。size是要读取的每个元素的
大小,以字节为单位。nmemb是元素的个数,每个元素的大小为 size 字节。stream是指向
FILE 对象的指针,该 FILE 对象指定了一个输入流。
返回值:成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果
总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
3.31函数fwrite
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
说明:把 ptr 所指向的数组中的数据写入到给定流 stream 中。
参数:ptr是指向要被写入的元素数组的指针。size是要被写入的每个元素的大小,以字节为单
位。nmemb是元素的个数,每个元素的大小为 size 字节。stream是指向 FILE 对象的指针,该
FILE 对象指定了一个输出流。
返回值:如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象时一个整型数据
类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
3.32函数fgetpos
int fgetpos(FILE *stream,fpos_t *pos);
说明:获取流 stream 的当前文件位置,并把它写入到 pos
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。pos是指向 fpos_t 对象的指
针。
返回值:如果成功,该函数返回零。如果发生错误,则返回非零值。
3.33函数fseek
int fseek(FILE *stream,long int offset,int whence);
说明:设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的
whence 位置查找的字节数。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
offset是相对 whence 的偏移量,以字节为单位。
whence是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:
SEEK_SET 文件的开头
SEEK_CUR 文件指针的当前位置
SEEK_END 文件的末尾
返回值:如果成功,则该函数返回零,否则返回非零值。
3.34函数fsetpos
int fsetpos(FILE *stream,const fpos_t *pos);
说明:设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位
置。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
pos是指向 fpos_t 对象的指针,该对象包含了之前通过 fgetpos 获得的位置。
返回值:如果成功,该函数返回零值,否则返回非零值,并设置全局变量 errno 为一个正值,
该值可通过 perror 来解释。
3.35函数ftell
long int ftell(FILE *stream);
说明:返回给定流 stream 的当前文件位置。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设
置为一个正值。
3.36函数rewind
void rewind(FILE *stream);
说明:设置文件位置为给定流 stream 的文件的开头。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:该函数不返回任何值。
3.37函数clearerr
void clearerr(FILE *stream);
说明:清除给定流 stream 的文件结束和错误标识符。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:这不会失败,且不会设置外部变量 errno,但是如果它检测到它的参数不是一个有效
的流,则返回 -1,并设置 errno 为 EBADF。
3.38函数feof
int feof(FILE *stream);
说明:测试给定流 stream 的文件结束标识符。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。
3.39函数ferror
int ferror(FILE *stream);
说明:测试给定流 stream 的错误标识符。
参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:如果设置了与流关联的错误标识符,该函数返回一个非零值,否则返回一个零值。
3.40函数perror
void perror(const char *s);
说明:把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,
然后是一个空格。
参数:str是 C 字符串,包含了一个自定义消息,将显示在原本的错误消息之前。
返回值:该函数不返回任何值.

头文件<stdio.h>