man stdio.h

本文档详细介绍了stdio.h头文件在POSIX系统中的应用,包括定义的数据类型、宏常量以及标准I/O函数的使用方法。内容涵盖FILE结构体、缓冲模式、文件定位常量、限制值和标准I/O函数原型等,是理解和使用POSIX系统I/O接口的重要参考资料。
摘要由CSDN通过智能技术生成

序言

        本手册页是POSIX程序员手册的一部分。这些接口的Linux实现可能不同(有关Linux

        行为的详细信息,请参阅相应的Linux手册页),或者接口可能未在Linux上实现。

名称

        stdio.h — 标准缓冲输入/输出

概要

        #include <stdio.h>

说明

        此参考页面中描述的某些功能扩展了ISO C标准。应用程序应定义适当的功能测试

        宏(参考POSIX.1-2008的系统接口卷,第2.2节,编译环境)来使能在本头文件中

        符号的可见性。

        <stdio.h>头文件使用typedef定义了以下的数据类型:

        FILE        包含文件信息的结构体。

        fpos_t      一个非数组类型,包含了所有的用于唯一指定文件位置的信息。

        off_t       在<sys/types.h>中描述。

        size_t      在<stddef.h>中描述。

        ssize_t     在<sys/types.h>中描述。

        va_list     在<stdarg.h>中描述。

        <stdio.h>头文件定义了以下宏,这些宏会被扩展为整型常量表达式:

        BUFSIZ     <stdio.h>缓冲区的大小,被扩展为正值。

        L_ctermid  保存ctermid()输出的字符数组的最大大小。

        L_tmpnam  保存tmpnam()输出的字符数组的最大大小。

        <stdio.h>头文件定义了以下宏,这些宏会被扩展为具有不同值的整型常量表达式:

        _IOFBF     输入/输出全缓冲。

        _IOLBF     输入/输出行缓冲。

        _IONBF     输入/输出无缓冲。

        <stdio.h>头文件定义了以下宏,这些宏会被扩展为具有不同值的整型常量表达式:

        SEEK_CUR  相对于当前位置。

        SEEK_END  相对于文件尾部。

        SEEK_SET  相对于文件开头。

        <stdio.h>头文件定义以下宏,这些宏会被扩展为表示限度的整型常量表达式:

        {FILENAME_MAX}

               由具体实现保证可以打开的最长路径名的长度,以字节为单位。

        {FOPEN_MAX}

               由具体实现保证可以同时打开的文件流数。该值至少为8。

        {TMP_MAX}

               tmpnam()可生成的唯一文件名的最小数量。应用程序可以可靠地调用

               tmpnam()的最大次数。该值至少为25。在XSI兼容的系统上,{TMP_MAX}

               的值至少为10000。

        <stdio.h>头文件定义以下宏,该宏会被扩展为具有int类型的负值的整型常量表达

        式:

        EOF    文件结束返回值。

        <stdio.h>头文件会定义NULL,如<stddef.h>中所述。

        <stdio.h>头文件定义以下宏,该宏会被扩展为字符串常量:

        P_tmpdir tempnam()使用的默认路径前缀。

        <stdio.h>头文件定义以下宏,这些宏会被扩展为指向FILE类型对象的指针,分别对

        应标准错误流,标准输入流和标准输出流:

        stderr   标准错误输出流。

        stdin    标准输入流。

        stdout   标准输出流。

        以下可能声明为函数,也可能定义为宏。应提供函数原型。

            void     clearerr(FILE *);

            char    *ctermid(char *);

            int      dprintf(int, const char *restrict, ...);

            int      fclose(FILE *);

            FILE    *fdopen(int, const char *);

            int      feof(FILE *);

            int      ferror(FILE *);

            int      fflush(FILE *);

            int      fgetc(FILE *);

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

            char    *fgets(char *restrict, int, FILE *restrict);

            int      fileno(FILE *);

            void     flockfile(FILE *);

            FILE    *fmemopen(void *restrict, size_t, const char *restrict);

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

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

            int      fputc(int, FILE *);

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

            size_t   fread(void *restrict, size_t, size_t, FILE *restrict);

            FILE    *freopen(const char *restrict, const char *restrict,

                         FILE *restrict);

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

            int      fseek(FILE *, long, int);

            int      fseeko(FILE *, off_t, int);

            int      fsetpos(FILE *, const fpos_t *);

            long     ftell(FILE *);

            off_t    ftello(FILE *);

            int      ftrylockfile(FILE *);

            void     funlockfile(FILE *);

            size_t   fwrite(const void *restrict, size_t, size_t, FILE *restrict);

            int      getc(FILE *);

            int      getchar(void);

            int      getc_unlocked(FILE *);

            int      getchar_unlocked(void);

            ssize_t  getdelim(char **restrict, size_t *restrict, int,

                         FILE *restrict);

            ssize_t  getline(char **restrict, size_t *restrict, FILE *restrict);

            char    *gets(char *);

            FILE    *open_memstream(char **, size_t *);

            int      pclose(FILE *);

            void     perror(const char *);

            FILE    *popen(const char *, const char *);

            int      printf(const char *restrict, ...);

            int      putc(int, FILE *);

            int      putchar(int);

            int      putc_unlocked(int, FILE *);

            int      putchar_unlocked(int);

            int      puts(const char *);

            int      remove(const char *);

            int      rename(const char *, const char *);

            int      renameat(int, const char *, int, const char *);

            void     rewind(FILE *);

            int      scanf(const char *restrict, ...);

            void     setbuf(FILE *restrict, char *restrict);

            int      setvbuf(FILE *restrict, char *restrict, int, size_t);

            int      snprintf(char *restrict, size_t, const char *restrict, ...);

            int      sprintf(char *restrict, const char *restrict, ...);

            int      sscanf(const char *restrict, const char *restrict, ...);

            char    *tempnam(const char *, const char *);

            FILE    *tmpfile(void);

            char    *tmpnam(char *);

            int      ungetc(int, FILE *);

            int      vdprintf(int, const char *restrict, va_list);

            int      vfprintf(FILE *restrict, const char *restrict, va_list);

            int      vfscanf(FILE *restrict, const char *restrict, va_list);

            int      vprintf(const char *restrict, va_list);

            int      vscanf(const char *restrict, va_list);

            int      vsnprintf(char *restrict, size_t, const char *restrict,

                         va_list);

            int      vsprintf(char *restrict, const char *restrict, va_list);

            int      vsscanf(const char *restrict, const char *restrict, va_list);

        包含<stdio.h>头文件也可以使得<stddef.h>中的所有符号可见。

        以下部分是信息描述。

应用使用方法

        由于标准I/O流可能使用底层文件描述符来访问与流关联的文件,因此应用程序开

        发人员需要注意,如果文件描述符用于访问与流无关的文件,则{FOPEN_MAX}可能

        不可用。

基本原理

        ISO C和POSIX之间针对{TMP_MAX}的定义存在冲突,该问题由ISO/IEC 9899:1999

        标准,缺陷报告336解决。POSIX与对缺陷报告的应对措施的公共记录保持一致,

        但此应对措施尚未作为 ISO C的一部分发布。

未来发展方向

        无。

推荐阅读

        <stdarg.h>, <stddef.h>, <sys_types.h>

        POSIX.1-2008的系统接口卷,第2.2节,编译环境,clearerr,ctermid,fclose,fdopen,

        feof,ferror,fflush,fgetc,fgetpos,fgets,fileno,flockfile,fmemopen,fopen,

        fprintf,fputc,fputs,fread,freopen,fscanf,fseek,fsetpos,ftell,fwrite,getc,

        getchar,getc_unlocked,getdelim,getopt,gets,open_memstream,pclose,perror,

        popen,putc,putchar,puts,remove,rename,rewind,setbuf,setvbuf,stdin,

        system,tempnam,tmpfile,tmpnam,ungetc,vfprintf,vfscanf

版权

        本文部分内容从IEEE 1003.1,2013版,信息技术标准 -- 便携式操作系统接口

        (POSIX)、开放组基本规范第7期以电子形式重印和复制,版权(C) 2013由电气和电

        子工程师协会和开放组所有。(这是POSIX.1-2008,应用了2013年技术勘误表1。)

        如果此版本与原始IEEE和The Open Group标准之间存在任何差异,则以原始IEEE

        和The Open Group标准为准。原始标准可以在http://www.unix.org/online.html在

        线获得。

        此页面中出现的任何印刷或格式错误很可能是在将源文件转换为手册页格式的过

        程中引入的。要报告此类错误,请参阅

        https://www.kernel.org/doc/man-pages/reporting_bugs.html。

IEEE/The Open Group                        2013                    stdio.h(7POSIX)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ta是一个搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值