0
点赞
收藏
分享

微信扫一扫

C Library User 手册(18)

兽怪海北 2022-03-12 阅读 39
开发语言

C Library User 手册(18)

10.16 stdio.h

包括标准头文件<stdio.h>,以便你可以对流和文件进行输入和输出操作。

/* MACROS */
#define _IOFBF <integer constant expression>
#define _IOLBF <integer constant expression>
#define _IONBF <integer constant expression>
#define BUFSIZ <integer constant expression >= 256> #define EOF <integer constant expression < 0>
#define FILENAME_MAX <integer constant expression > 0> #define FOPEN_MAX <integer constant expression >= 8> #define L_tmpnam <integer constant expression > 0> #define NULL <either 0, 0L, or (void *)0> [0 in C++] #define SEEK_CUR <integer constant expression> #define SEEK_END <integer constant expression> #define SEEK_SET <integer constant expression> #define TMP_MAX <integer constant expression >= 25> #define stderr <pointer to FILE rvalue>
#define stdin <pointer to FILE rvalue>
#define stdout <pointer to FILE rvalue>
/* TYPES */ typedef o-type FILE; typedef o-type fpos_t;
typedef ui-type size_t;
/* FUNCTIONS */
void clearerr(FILE *stream);
int fclose(FILE *stream);
int feof(FILE *stream);
int ferror(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 *stream);
int remove(const char *filename);
int rename(const char *old, const char *new);
void rewind(FILE *stream);
void setbuf(FILE *restrict stream, char *restrict buf);
int setvbuf(FILE *restrict stream, char *restrict buf, int mode,
size_t size);
FILE *tmpfile(void);
char *tmpnam(char *s);
int fseek(FILE *stream, long offset, int mode);
int fseeko(FILE *stream, off_t offset, int whence); [POSIX] off_t ftello(FILE *stream); [POSIX]
int fsetpos(FILE *stream, const fpos_t *pos);
int fgetpos(FILE *restrict stream, fpos_t *restrict pos);
long ftell(FILE *stream);
int fgetc(FILE *stream);
char *fgets(char *restrict s, int n, FILE *restrict stream); size_t fread(void *restrict ptr, size_t size, size_t nelem, FILE
*restrict stream); int getc(FILE *stream);
int getchar(void);
int getc_unlocked(FILE *stream); [POSIX]
int getchar_unlocked(void); [POSIX]
char *gets(char *s);
int ungetc(int c, FILE *stream);
int fputc(int c, FILE *stream);
int fputs(const char *restrict s, FILE *restrict stream);
size_t fwrite(const void *restrict ptr, size_t size, size_t nelem,
FILE *restrict stream);
void perror(const char *s);
int putc(int c, FILE *stream);
int putchar(int c);
int putc_unlocked(int c, FILE *stream); [POSIX]
int putchar_unlocked(int c); [POSIX]
int puts(const char *s);
int fscanf(FILE *restrict stream, const char *restrict format,
...);
int scanf(const char *restrict format, ...);
int sscanf(const char *restrict s, const char *restrict format,
...);
int fprintf(FILE *restrict stream, const char *restrict format,
...);
int printf(const char *restrict format, ...);
int sprintf(char *restrict s, const char *restrict format, ...); int vfprintf(FILE *restrict stream, const char *restrict format,
va_list ap);
int vprintf(const char *restrict format, va_list ap);
int vsprintf(char *restrict s, const char *restrict format, va_list
ap);

10.16.1 BUFSIZ

#define BUFSIZ <integer constant expression >= 256>

该宏产生setbuf所使用的流缓冲区的大小。

10.16.2 clearerr

void clearerr(FILE *stream);

该函数清除了流媒体的文件结束和错误指示器。

10.16.3 EOF

#define EOF <integer constant expression < 0>

该宏产生的返回值用于信号流的结束或报告一个错误的
条件。

10.16.4 fclose

int fclose(FILE *stream);

该函数关闭了与流媒体相关的文件。fclose将任何缓冲输出写入文件,如果是自动分配的流缓冲区,则将其删除,并删除流和文件之间的关联。不要在随后的表达式中使用流的值。

10.16.5 feof

int feof(FILE *stream);

如果为流设置了文件结束指示器,该函数返回一个非零值
流。

10.16.6 ferror


int ferror(FILE *stream);

如果为流媒体设置了错误指示器,该函数返回一个非零值。

10.16.7 fflush

int fflush(FILE *stream);

该函数将任何缓冲输出写入与stream流相关的文件,如果成功则返回0,否则返回EOF。如果流是一个空指针,fflush将任何缓冲输出写到所有为输出打开的文件中。

10.16.8 fgetc

int fgetc(FILE *stream);

该函数从输入流中读取下一个字符c(如果存在),推进文件位置指示器(如果定义),并返回(int)(无符号字符)c。如果该函数设置了文件结束指示器或错误指示器,它将返回EOF。

10.16.9 fgetpos

int fgetpos(FILE *restrict stream, fpos_t *restrict pos);

该函数在*pos中存储流的文件位置指示器,如果成功则返回0;否则,该函数在errno中存储一个正值并返回一个非零值。

10.16.10 fgets

char *fgets(char *restrict s, int n, FILE *restrict stream);

该函数从输入流中读取字符,并将它们存储在数组的连续元素中,从s开始,一直到存储n-1个字符,存储一个NL字符,或者设置文件结束或错误指示符。如果fgets存储了任何字符,它的结论是在数组的下一个元素中存储一个空字符。如果它存储了任何字符,并且没有为流设置错误指示器,则返回s;否则,它返回一个空指针。如果它设置了错误指示器,那么数组的内容是不确定的。

10.16.11 FILE

typedef o-type FILE;

该类型是一个对象类型o-type,存储了一个流的所有控制信息。函数fopen和freopen分配了所有读写函数使用的FILE对象。

10.16.12 FILENAME_MAX

#define FILENAME_MAX <integer constant expression > 0>

该宏产生你必须提供的最大尺寸的字符数组,以容纳一个
文件名。

10.16.13 fopen

FILE *fopen(const char *restrict filename, const char *restrict mode);

该函数以文件名filename打开文件,将其与一个流相关联,并返回一个指向控制流的对象的指针。如果打开失败,它返回一个空指针。mode的初始字符决定了程序如何操作流,以及它是否将流解释为文本或二进制。初始字符必须是以下序列中的一个。
■r"-打开一个现有的文本文件进行阅读。
■w"–创建一个文本文件或打开并截断一个现有的文本文件,用于写入。
■"a"–创建一个文本文件或打开一个现有的文本文件,用于写入。在每次写入之前,文件位置指示器被定位在文件的末端。
■rb"–打开一个现有的二进制文件进行读取。
■wb"–创建一个二进制文件或打开并截断一个现有的二进制文件,用于写作
■ab"-创建一个二进制文件或打开一个现有的二进制文件,用于写入。在每次写入之前,文件位置指示器被定位在文件的末端(可能在任意的空字节填充之后)。
■r+"-打开一个现有的文本文件进行读写。
■w+"–创建一个文本文件,或者打开并截断一个现有的文本文件,以便进行读写。
创建一个文本文件或打开并截断一个现有的文本文件,用于读写
■a+"–创建一个文本文件或打开一个现有的文本文件,进行读写。文件位置指示器在每次写入前都会被定位在文件的末端
■r+b "或 “rb+”-打开一个现有的二进制文件进行读写。
■w+b "或 “wb+”–创建一个二进制文件或打开并截断一个现有的二进制文件。
创建一个二进制文件或打开并截断一个现有的二进制文件,用于读写
■"a+b "或 “ab+”–创建一个二进制文件或打开一个现有的二进制文件,进行读写。在每次写入之前,文件位置指示器被定位在文件的末端(可能是在任意的空字节填充之后)。

如果你打开一个文件进行读写,目标环境可以打开一个二进制文件而不是一个文本文件。如果该文件不是交互式的,流是完全缓冲的。

10.16.14 FOPEN_MAX

#define FOPEN_MAX <integer constant expression >= 8>

该宏产生了目标环境允许同时打开的最大文件数
同时打开的文件(包括stderr、stdin和stdout)。

10.16.15 fpos_t

typedef o-type fpos_t;

该类型是一个对象的类型o-type,你声明该对象用于保存由fsetpos存储的文件位置指示器的值。
位置指示器的值,该指示器由 fsetpos 存储并由 fgetpos 访问。

10.16.16 fprintf

int fprintf(FILE *restrict stream, const char *restrict format, ...);

该函数在格式格式和任何附加参数的控制下,生成格式化的文本,并将每个生成的字符写入流中。它返回生成的字符数,如果该函数为流设置了错误指示器,则返回一个负值。

10.16.17 fputc


int fputc(int c, FILE *stream);

该函数将字符(unsigned char)c写入输出流流,推进文件位置指示器(如果定义),并返回(int)(unsigned char)c。如果该函数为流设置了错误指示器,它将返回EOF。

10.16.18 fputs

int fputs(const char *restrict s, FILE *restrict stream);

该函数从C语言字符串s中访问字符,并将它们写入输出流。该函数不写终止的空字符。如果没有设置错误指示器,它返回一个非负值;否则,它返回EOF。

10.16.19 fread

size_t fread(void *restrict ptr, size_t size, size_t nelem, FILE *restrict stream);

该函数从输入流中读取字符,并将它们存储在数组的连续元素中,该数组的第一个元素具有(char )ptr的地址,直到该函数存储sizenelem字符或设置文件结束或错误指示器。它返回n/size,其中n是它读取的字符数。如果n不是size的倍数,存储在最后一个元素的值是不确定的。如果该函数设置了错误指示器,文件位置指示器是不确定的。

10.16.20 freopen


FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *stream);

该函数关闭了与流媒体关联的文件(就像调用fclose一样);然后它用文件名filename打开文件,并将文件与流媒体关联(就像调用fopen(filename, mode)一样)。如果打开成功,它返回流;否则,它返回一个空指针。

10.16.21 fscanf

int fscanf(FILE *restrict stream, const char *restrict format, ...);

该函数在格式格式和任何附加参数的控制下,扫描格式化的文本。它从流中获取每个扫描的字符。它返回匹配和分配的输入项目的数量,或者如果函数在为流设置文件结束或错误指示器之前没有存储值,它返回EOF。

10.16.22 fseek

int fseek(FILE *stream, long offset, int mode);

该函数设置流的文件位置指示器(由偏移量和模式指定)。
和模式),清除该流的文件结束指示器,如果成功则返回0。对于二进制流,offset是以字节为单位的有符号偏移。
■如果模式的值是SEEK_SET,fseek将偏移量加到文件开头的文件位置指示器上。
■如果模式的值是SEEK_CUR,fseek将偏移量加到当前文件位置的指示器上。
■如果模式的值是SEEK_END,fseek将偏移量加到文件末端的文件位置指示器上(可能在任意的空字符填充后)。
fseek将文件位置指示器设置为这个加法的结果。对于一个文本流。
■如果模式的值是SEEK_SET,fseek将文件位置指示器设置为offset编码的值,这个值要么是先前成功调用ftell返回的值,要么是表示文件开始的0。
■如果模式的值是SEEK_CUR,并且偏移量是0,fseek将文件位置指示器保持在当前值。
■如果模式的值是SEEK_END且偏移量为0,fseek将文件位置指示器设置为文件的结束。
该函数没有定义其他参数值的组合。

10.16.23 fseeko


int fseeko(FILE *stream, off_t offset, int whence); [POSIX] The fseeko function is identical to fseek, except that the offset argument is of type
off_t.

10.16.24 fsetpos

int fsetpos(FILE *stream, const fpos_t *pos);

该函数将流的文件位置指示器设置为存储在*pos中的值,清除流的文件结束指示器,如果成功返回0。否则,该函数在errno中存储一个正值并返回一个非零值。

10.16.25 ftell

long ftell(FILE *stream);

该函数返回流的文件位置指示器的编码形式,或者在errno中存储一个正值并返回值-1。对于二进制文件,一个成功的返回值给出了从文件开始的字节数。对于一个文本文件,目标环境可以在编码的文件位置指标值的表示和范围上有所不同。

10.16.26 ftello

off_t ftello(FILE *stream); [POSIX]

ftello函数与ftell相同,只是返回值类型为off_t。

10.16.27 fwrite

size_t fwrite(const void *restrict ptr, size_t size, size_t nelem, FILE *stream);

该函数将字符写入输出流,从数组的连续元素中获取数值,该数组的第一个元素具有(char )ptr地址,直到该函数写入sizenelem字符或设置错误指示器。它返回n/size,其中n是它写入的字符数。如果该函数设置了错误指示器,那么文件位置指示器是不确定的。

10.16.28 getc

int getc(FILE *stream);

该函数与fgetc(stream)具有相同的效果,只是getc的宏版
可以多次评估流。

10.16.29 getc_unlocked

int getc_unlocked(FILE *stream); [POSIX]

getc_unlocked函数提供与getc相同的功能,但不对其操作的流进行隐式锁定。在多线程程序中,它只能在调用线程已经成功锁定流的范围内使用。

10.16.30 getchar

int getchar(void);

该函数的效果与fgetc(stdin)相同,从流中读取一个字符
stdin

10.16.31 getchar_unlocked

int getchar_unlocked(void); [POSIX]

getchar_unlocked函数提供与getchar相同的功能,但不对其操作的流进行隐式锁定。在多线程程序中,它只能在调用线程已经成功锁定流的范围内使用。

10.16.32 gets

char *gets(char *s);

该函数从数据流stdin中读取字符,并将其存储在数组的连续元素中,数组的第一个元素的地址为s,直到该函数读取一个NL字符(不存储)或设置文件结束或错误指示器。如果Get读到任何字符,它的结论是在数组的下一个元素中存储一个空字符。如果它读到了任何字符并且没有为流设置错误指示器,则返回s;否则,它返回一个空指针。如果它设置了错误指示器,那么数组内容是不确定的。gets读取和存储的字符数不能被限制。使用fgets代替。

举报

相关推荐

0 条评论