• C 标准库


    一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。 #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。

    引用方法


    #include <stdio.h>
    (注:在TC2.0中,允许不引用此头文件而直接调用其中的函数,但这种做法是不标准的。也不建议这样做。以避免出现在其他IDE中无法编译或执行的问题。)[2] 
    stdio 就是指 “standard input & output"(标准输入输出
    所以,源代码中如用到标准输入输出函数时,就要包含这个头文件
    例如c语言中的 printf("%d",i); scanf("%d",&i);等函数。

    简介

    stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。

    库变量

    下面是头文件 stdio.h 中定义的变量类型:

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

    库宏

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

    序号宏 & 描述
    1 NULL
    这个宏是一个空指针常量的值。
    2 _IOFBF、_IOLBF 和 _IONBF 
    这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。
    3 BUFSIZ
    这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。
    4 EOF 
    这个宏是一个表示已经到达文件结束的负整数。
    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 类型的指针,分别对应于标准错误、标准输入和标准输出流。

    库函数

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

    为了更好地理解函数,请按照下面的序列学习这些函数,因为第一个函数中创建的文件会在后续的函数中使用到。
    序号函数 & 描述
    1 int fclose(FILE *stream)
    关闭流 stream。刷新所有的缓冲区。
    2 void clearerr(FILE *stream)
    清除给定流 stream 的文件结束和错误标识符。
    3 int feof(FILE *stream)
    测试给定流 stream 的文件结束标识符。
    4 int ferror(FILE *stream)
    测试给定流 stream 的错误标识符。
    5 int fflush(FILE *stream)
    刷新流 stream 的输出缓冲区。
    6 int fgetpos(FILE *stream, fpos_t *pos)
    获取流 stream 的当前文件位置,并把它写入到 pos。
    7 FILE *fopen(const char *filename, const char *mode)
    使用给定的模式 mode 打开 filename 所指向的文件。
    8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
    从给定流 stream 读取数据到 ptr 所指向的数组中。
    9 FILE *freopen(const char *filename, const char *mode, FILE *stream)
    把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
    10 int fseek(FILE *stream, long int offset, int whence)
    设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
    11 int fsetpos(FILE *stream, const fpos_t *pos)
    设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。
    12 long int ftell(FILE *stream)
    返回给定流 stream 的当前文件位置。
    13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
    把 ptr 所指向的数组中的数据写入到给定流 stream 中。
    14 int remove(const char *filename)
    删除给定的文件名 filename,以便它不再被访问。
    15 int rename(const char *old_filename, const char *new_filename)
    把 old_filename 所指向的文件名改为 new_filename。
    16 void rewind(FILE *stream)
    设置文件位置为给定流 stream 的文件的开头。
    17 void setbuf(FILE *stream, char *buffer)
    定义流 stream 应如何缓冲。
    18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
    另一个定义流 stream 应如何缓冲的函数。
    19 FILE *tmpfile(void)
    以二进制更新模式(wb+)创建临时文件。
    20 char *tmpnam(char *str)
    生成并返回一个有效的临时文件名,该文件名之前是不存在的。
    21 int fprintf(FILE *stream, const char *format, ...)
    发送格式化输出到流 stream 中。
    22 int printf(const char *format, ...)
    发送格式化输出到标准输出 stdout。
    23 int sprintf(char *str, const char *format, ...)
    发送格式化输出到字符串。
    24 int vfprintf(FILE *stream, const char *format, va_list arg)
    使用参数列表发送格式化输出到流 stream 中。
    25 int vprintf(const char *format, va_list arg)
    使用参数列表发送格式化输出到标准输出 stdout。
    26 int vsprintf(char *str, const char *format, va_list arg)
    使用参数列表发送格式化输出到字符串。
    27 int fscanf(FILE *stream, const char *format, ...)
    从流 stream 读取格式化输入。
    28 int scanf(const char *format, ...)
    从标准输入 stdin 读取格式化输入。
    29 int sscanf(const char *str, const char *format, ...)
    从字符串读取格式化输入。
    30 int fgetc(FILE *stream)
    从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
    31 char *fgets(char *str, int n, FILE *stream)
    从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
    32 int fputc(int char, FILE *stream)
    把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
    33 int fputs(const char *str, FILE *stream)
    把字符串写入到指定的流 stream 中,但不包括空字符。
    34 int getc(FILE *stream)
    从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
    35 int getchar(void)
    从标准输入 stdin 获取一个字符(一个无符号字符)。
    36 char *gets(char *str)
    从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
    37 int putc(int char, FILE *stream)
    把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
    38 int putchar(int char)
    把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
    39 int puts(const char *str)
    把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。
    40 int ungetc(int char, FILE *stream)
    把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。
    41 void perror(const char *str)
    把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。

    标准函数

    int getchar()//从标准输入设备读入一个字符
    int putchar()//向标准输出设备写出一个字符
    int scanf(char*format[,argument…])//从标准输入设备读入格式化后的数据
    int printf(char*format[,argument…])//向标准输出设备输出格式化字符串
    char gets(char*string)//从标准输入设备读入一个字符串
    int puts(char*string)//向标准输出设备输出一个字符串
    int sprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区

    文件内容

    文件说明

    /*
    *stdio.h
    *ThisfilehasnocopyrightassignedandisplacedinthePublicDomain.
    *Thisfileisapartofthemingw-runtimepackage.
    *Nowarrantyisgiven;refertothefileDISCLAIMERwithinthepackage.
    *
    *Definitionsoftypesandprototypesoffunctionsforstandardinputand
    *output.
    *
    *NOTE:ThefilemanipulationfunctionsprovidedbyMicrosoftseemto
    *workwitheitherslash(/)orbackslash()asthedirectoryseparator.
    *
    */

    宏定义

    #ifndef_STDIO_H_
    #define_STDIO_H_
    /*Alltheheadersincludethisfile.*/
    #include<_mingw.h>
    #ifndefRC_INVOKED
    #define__need_size_t
    #define__need_NULL
    #define__need_wchar_t
    #define__need_wint_t
    #include<stddef.h>
    #define__need___va_list
    #include<stdarg.h>
    #endif/*NotRC_INVOKED*/
    /*Flagsfortheiobufstructure*/
    #define_IOREAD1/*currentlyreading*/
    #define_IOWRT2/*currentlywriting*/
    #define_IORW0x0080/*openedas"r+w"*/
    /*
    *Thethreestandardfilepointersprovidedbytheruntimelibrary.
    *NOTE:Thesewillgotothebit-bucketsilentlyinGUIapplications!
    */
    #defineSTDIN_FILENO0
    #defineSTDOUT_FILENO1
    #defineSTDERR_FILENO2
    /*Returnedbyvariousfunctionsonendoffileconditionorerror.*/
    #defineEOF(-1)
    /*
    *Themaximumlengthofafilename.YoushoulduseGetVolumeInformation
    *insteadofthisconstant.Buthey,thisworks.
    *Alsodefinedinio.h.
    */
    #ifndefFILENAME_MAX
    #defineFILENAME_MAX(260)
    #endif
    /*
    *Themaximumnumberoffilesthatmaybeopenatonce.Ihavesetthisto
    *aconservativenumber.Theactualvaluemaybehigher.
    */
    #defineFOPEN_MAX(20)
    /*Aftercreatingthismanynames,tmpnamandtmpfilereturnNULL*/
    #defineTMP_MAX32767
    /*
    *Tmpnam,tmpfileand,sometimes,_tempnamtrytocreate
    *tempfilesintherootdirectoryofthecurrentdrive
    *(notinpwd,assuggestedbysomeolderMSdoc's).
    *RedefiningthesemacrosdoesnoteffecttheCRTfunctions.
    */
    #define_P_tmpdir"\"
    #ifndef__STRICT_ANSI__
    #defineP_tmpdir_P_tmpdir
    #endif
    #define_wP_tmpdirL"\"
    /*
    *Themaximumsizeofname(includingNUL)thatwillbeputintheuser
    *suppliedbuffercaNamefortmpnam.
    *Inferredfromthesizeofthestaticbufferreturnedbytmpnam
    *whenpassedaNULLargument.Mayactuallybesmaller.
    */
    #defineL_tmpnam(16)
    #define_IOFBF0x0000/*fullbuffered*/
    #define_IOLBF0x0040/*linebuffered*/
    #define_IONBF0x0004/*notbuffered*/
    #define_IOMYBUF0x0008/*stdiomalloc()'dbuffer*/
    #define_IOEOF0x0010/*EOFreachedonread*/
    #define_IOERR0x0020/*I/Oerrorfromsystem*/
    #define_IOSTRG0x0040/*Strangeornofiledescriptor*/
    #ifdef_POSIX_SOURCE
    #define_IOAPPEND0x0200
    #endif
    /*
    *Thebuffersizeasusedbysetbufsuchthatitisequivalentto
    *(void)setvbuf(fileSetBuffer,caBuffer,_IOFBF,BUFSIZ).
    */
    #defineBUFSIZ512
    /*ConstantsfornOriginindicatingthepositionrelativetowhichfseek
    *setsthefileposition.Enclosedinifdefsbecauseio.hcouldalso
    *definethem.(Thoughnotanymoresinceio.hincludesthisfilenow.)*/
    #ifndefSEEK_SET
    #defineSEEK_SET(0)
    #endif
    #ifndefSEEK_CUR
    #defineSEEK_CUR(1)
    #endif
    #ifndefSEEK_END
    #defineSEEK_END(2)
    #endif
    #ifndefRC_INVOKED
    #ifndef__VALIST
    #ifdef__GNUC__
    #define__VALIST__gnuc_va_list
    #else
    #define__VALISTchar*
    #endif
    #endif/*defined__VALIST*/
    /*
    *ThestructureunderlyingtheFILEtype.
    *
    *Somebelievethatnobodyintheirrightmindshouldmakeuseofthe
    *internalsofthisstructure.ProvidedbyPedroA.ArandaGutiirrez
    */
    #ifndef_FILE_DEFINED
    #define_FILE_DEFINED

    结构体定义

    typedefstruct_iobuf
    {
    char*_ptr;
    int_cnt;
    char*_base;
    int_flag;
    int_file;
    int_charbuf;
    int_bufsiz;
    char*_tmpfname;
    }FILE;
    #endif/*Not_FILE_DEFINED*/
    /*
    *Thestandardfilehandles
    */
    #ifndef__DECLSPEC_SUPPORTED
    externFILE(*_imp___iob)[];/*ApointertoanarrayofFILE*/
    #define_iob(*_imp___iob)/*AnarrayofFILE*/
    #else/*__DECLSPEC_SUPPORTED*/
    __MINGW_IMPORTFILE_iob[];/*AnarrayofFILEimportedfromDLL.*/
    #endif/*__DECLSPEC_SUPPORTED*/
    #definestdin(&_iob[STDIN_FILENO])
    #definestdout(&_iob[STDOUT_FILENO])
    #definestderr(&_iob[STDERR_FILENO])

    操作函数定义

    #ifdef__cplusplus
    extern"C"{
    #endif
    /*
    *FileOperations
    */
    _CRTIMPFILE*__cdeclfopen(constchar*,constchar*);
    _CRTIMPFILE*__cdeclfreopen(constchar*,constchar*,FILE*);
    _CRTIMPint__cdeclfflush(FILE*);
    _CRTIMPint__cdeclfclose(FILE*);
    /*MSputsremove&rename(butnotwideversions)inio.halso*/
    _CRTIMPint__cdeclremove(constchar*);
    _CRTIMPint__cdeclrename(constchar*,constchar*);
    _CRTIMPFILE*__cdecltmpfile(void);
    _CRTIMPchar*__cdecltmpnam(char*);
    #ifndef__STRICT_ANSI__
    _CRTIMPchar*__cdecl_tempnam(constchar*,constchar*);
    _CRTIMPint__cdecl_rmtmp(void);
    #ifndefNO_OLDNAMES
    _CRTIMPchar*__cdecltempnam(constchar*,constchar*);
    _CRTIMPint__cdeclrmtmp(void);
    #endif
    #endif/*__STRICT_ANSI__*/
    _CRTIMPint__cdeclsetvbuf(FILE*,char*,int,size_t);
    _CRTIMPvoid__cdeclsetbuf(FILE*,char*);
    /*
    *FormattedOutput
    */
    _CRTIMPint__cdeclfprintf(FILE*,constchar*,...);
    _CRTIMPint__cdeclprintf(constchar*,...);
    _CRTIMPint__cdeclsprintf(char*,constchar*,...);
    _CRTIMPint__cdecl_snprintf(char*,size_t,constchar*,...);
    _CRTIMPint__cdeclvfprintf(FILE*,constchar*,__VALIST);
    _CRTIMPint__cdeclvprintf(constchar*,__VALIST);
    _CRTIMPint__cdeclvsprintf(char*,constchar*,__VALIST);
    _CRTIMPint__cdecl_vsnprintf(char*,size_t,constchar*,__VALIST);
    #ifndef__NO_ISOCEXT/*externsinlibmingwex.a*/
    int__cdeclsnprintf(char*s,size_tn,constchar*format,...);
    __CRT_INLINEint__cdecl
    vsnprintf(char*s,size_tn,constchar*format,__VALISTarg)
    {return_vsnprintf(s,n,format,arg);}
    int__cdeclvscanf(constchar*__restrict__,__VALIST);
    int__cdeclvfscanf(FILE*__restrict__,constchar*__restrict__,
    __VALIST);
    int__cdeclvsscanf(constchar*__restrict__,
    constchar*__restrict__,__VALIST);
    #endif
    /*
    *FormattedInput
    */
    _CRTIMPint__cdeclfscanf(FILE*,constchar*,...);
    _CRTIMPint__cdeclscanf(constchar*,...);
    _CRTIMPint__cdeclsscanf(constchar*,constchar*,...);
    /*
    *CharacterInputandOutputFunctions
    */
    _CRTIMPint__cdeclfgetc(FILE*);
    _CRTIMPchar*__cdeclfgets(char*,int,FILE*);
    _CRTIMPint__cdeclfputc(int,FILE*);
    _CRTIMPint__cdeclfputs(constchar*,FILE*);
    _CRTIMPchar*__cdeclgets(char*);
    _CRTIMPint__cdeclputs(constchar*);
    _CRTIMPint__cdeclungetc(int,FILE*);
    /*Traditionally,getcandputcaredefinedasmacros.butthe
    standarddoesn'tsaythattheymustbemacros.
    Weuseinlinefunctionsheretoallowthefastversions
    tobeusedinC++withnamespacequalification,eg.,::getc.
    _filbufand_flsbufarenotthread-safe.*/
    _CRTIMPint__cdecl_filbuf(FILE*);
    _CRTIMPint__cdecl_flsbuf(int,FILE*);
    #if!defined_MT
    __CRT_INLINEint__cdeclgetc(FILE*__F)
    {
    return(--__F->_cnt>=0)
    ?(int)(unsignedchar)*__F->_ptr++
    :_filbuf(__F);
    }
    __CRT_INLINEint__cdeclputc(int__c,FILE*__F)
    {
    return(--__F->_cnt>=0)
    ?(int)(unsignedchar)(*__F->_ptr++=(char)__c)
    :_flsbuf(__c,__F);
    }
    __CRT_INLINEint__cdeclgetchar(void)
    {
    return(--stdin->_cnt>=0)
    ?(int)(unsignedchar)*stdin->_ptr++
    :_filbuf(stdin);
    }
    __CRT_INLINEint__cdeclputchar(int__c)
    {
    return(--stdout->_cnt>=0)
    ?(int)(unsignedchar)(*stdout->_ptr++=(char)__c)
    :_flsbuf(__c,stdout);}
    #else/*Uselibraryfunctions.*/
    _CRTIMPint__cdeclgetc(FILE*);
    _CRTIMPint__cdeclputc(int,FILE*);
    _CRTIMPint__cdeclgetchar(void);
    _CRTIMPint__cdeclputchar(int);
    #endif
    /*
    *DirectInputandOutputFunctions
    */
    _CRTIMPsize_t__cdeclfread(void*,size_t,size_t,FILE*);
    _CRTIMPsize_t__cdeclfwrite(constvoid*,size_t,size_t,FILE*);
    /*
    *FilePositioningFunctions
    */
    _CRTIMPint__cdeclfseek(FILE*,long,int);
    _CRTIMPlong__cdeclftell(FILE*);
    _CRTIMPvoid__cdeclrewind(FILE*);
    #ifdef__USE_MINGW_FSEEK/*Theseareinlibmingwex.a*/
    /*
    *Workaroundforlimitationsonwin9xwhereafilecontentsare
    *notzero'doutifyouseekpasttheendandthenwrite.
    */
    int__cdecl__mingw_fseek(FILE*,long,int);
    int__cdecl__mingw_fwrite(constvoid*,size_t,size_t,FILE*);
    #definefseek(fp,offset,whence)__mingw_fseek(fp,offset,whence)
    #definefwrite(buffer,size,count,fp)__mingw_fwrite(buffer,size,count,fp)
    #endif/*__USE_MINGW_FSEEK*/
    /*
    *Anopaquedatatypeusedforstoringfilepositions...Thecontentsof
    *thistypeareunknown,butwe(thecompiler)needtoknowthesize
    *becausetheprogrammerusingfgetposandfsetposwillbesettingaside
    *storageforfpos_tstructres.ActuallyItestedusingabytearrayand
    *itisfairlyevidentthatthefpos_ttypeisalong(inCRTDLL.DLL).
    *Perhapsanunsignedlong?TODO?It'sdefinitelya64-bitnumberin
    *MSVCRThowever,andfornow`longlong'willdo.
    */
    #ifdef__MSVCRT__
    typedeflonglongfpos_t;
    #else
    typedeflongfpos_t;
    #endif
    _CRTIMPint__cdeclfgetpos(FILE*,fpos_t*);
    _CRTIMPint__cdeclfsetpos(FILE*,constfpos_t*);
    /*
    *ErrorFunctions
    */
    _CRTIMPint__cdeclfeof(FILE*);
    _CRTIMPint__cdeclferror(FILE*);
    #ifdef__cplusplus
    inlineint__cdeclfeof(FILE*__F)
    {return__F->_flag&_IOEOF;}
    inlineint__cdeclferror(FILE*__F)
    {return__F->_flag&_IOERR;}
    #else
    #definefeof(__F)((__F)->_flag&_IOEOF)
    #defineferror(__F)((__F)->_flag&_IOERR)
    #endif
    _CRTIMPvoid__cdeclclearerr(FILE*);
    _CRTIMPvoid__cdeclperror(constchar*);
    #ifndef__STRICT_ANSI__
    /*
    *Pipes
    */
    _CRTIMPFILE*__cdecl_popen(constchar*,constchar*);
    _CRTIMPint__cdecl_pclose(FILE*);
    #ifndefNO_OLDNAMES
    _CRTIMPFILE*__cdeclpopen(constchar*,constchar*);
    _CRTIMPint__cdeclpclose(FILE*);
    #endif
    /*
    *OtherNonANSIfunctions
    */
    _CRTIMPint__cdecl_flushall(void);
    _CRTIMPint__cdecl_fgetchar(void);
    _CRTIMPint__cdecl_fputchar(int);
    _CRTIMPFILE*__cdecl_fdopen(int,constchar*);
    _CRTIMPint__cdecl_fileno(FILE*);
    _CRTIMPint__cdecl_fcloseall(void);
    _CRTIMPFILE*__cdecl_fsopen(constchar*,constchar*,int);
    #ifdef__MSVCRT__
    _CRTIMPint__cdecl_getmaxstdio(void);
    _CRTIMPint__cdecl_setmaxstdio(int);
    #endif
    #ifndef_NO_OLDNAMES
    _CRTIMPint__cdeclfgetchar(void);
    _CRTIMPint__cdeclfputchar(int);
    _CRTIMPFILE*__cdeclfdopen(int,constchar*);
    _CRTIMPint__cdeclfileno(FILE*);
    #endif/*Not_NO_OLDNAMES*/
    #define_fileno(__F)((__F)->_file)
    #ifndef_NO_OLDNAMES
    #definefileno(__F)((__F)->_file)
    #endif
    #ifdefined(__MSVCRT__)&&!defined(__NO_MINGW_LFS)
    #include<sys/types.h>
    __CRT_INLINEFILE*__cdeclfopen64(constchar*filename,constchar*mode)
    {
    returnfopen(filename,mode);
    }
    int__cdeclfseeko64(FILE*,off64_t,int);
    #ifdef__USE_MINGW_FSEEK
    int__cdecl__mingw_fseeko64(FILE*,off64_t,int);
    #definefseeko64(fp,offset,whence)__mingw_fseeko64(fp,offset,whence)
    #endif
    __CRT_INLINEoff64_t__cdeclftello64(FILE*stream)
    {
    fpos_tpos;
    if(fgetpos(stream,&pos))
    return-1LL;
    else
    return((off64_t)pos);
    }
    #endif/*__NO_MINGW_LFS*/
    #endif/*Not__STRICT_ANSI__*/
    /*Wideversions*/
    #ifndef_WSTDIO_DEFINED
    /*alsoinwchar.h-keepinsync*/
    _CRTIMPint__cdeclfwprintf(FILE*,constwchar_t*,...);
    _CRTIMPint__cdeclwprintf(constwchar_t*,...);
    _CRTIMPint__cdeclswprintf(wchar_t*,constwchar_t*,...);
    _CRTIMPint__cdecl_snwprintf(wchar_t*,size_t,constwchar_t*,...);
    _CRTIMPint__cdeclvfwprintf(FILE*,constwchar_t*,__VALIST);
    _CRTIMPint__cdeclvwprintf(constwchar_t*,__VALIST);
    _CRTIMPint__cdeclvswprintf(wchar_t*,constwchar_t*,__VALIST);
    _CRTIMPint__cdecl_vsnwprintf(wchar_t*,size_t,constwchar_t*,__VALIST);
    _CRTIMPint__cdeclfwscanf(FILE*,constwchar_t*,...);
    _CRTIMPint__cdeclwscanf(constwchar_t*,...);
    _CRTIMPint__cdeclswscanf(constwchar_t*,constwchar_t*,...);
    _CRTIMPwint_t__cdeclfgetwc(FILE*);
    _CRTIMPwint_t__cdeclfputwc(wchar_t,FILE*);
    _CRTIMPwint_t__cdeclungetwc(wchar_t,FILE*);
    #ifdef__MSVCRT__
    _CRTIMPwchar_t*__cdeclfgetws(wchar_t*,int,FILE*);
    _CRTIMPint__cdeclfputws(constwchar_t*,FILE*);
    _CRTIMPwint_t__cdeclgetwc(FILE*);
    _CRTIMPwint_t__cdeclgetwchar(void);
    _CRTIMPwchar_t*__cdecl_getws(wchar_t*);
    _CRTIMPwint_t__cdeclputwc(wint_t,FILE*);
    _CRTIMPint__cdecl_putws(constwchar_t*);
    _CRTIMPwint_t__cdeclputwchar(wint_t);
    _CRTIMPFILE*__cdecl_wfdopen(int,wchar_t*);
    _CRTIMPFILE*__cdecl_wfopen(constwchar_t*,constwchar_t*);
    _CRTIMPFILE*__cdecl_wfreopen(constwchar_t*,constwchar_t*,FILE*);
    _CRTIMPFILE*__cdecl_wfsopen(constwchar_t*,constwchar_t*,int);
    _CRTIMPwchar_t*__cdecl_wtmpnam(wchar_t*);
    _CRTIMPwchar_t*__cdecl_wtempnam(constwchar_t*,constwchar_t*);
    _CRTIMPint__cdecl_wrename(constwchar_t*,constwchar_t*);
    _CRTIMPint__cdecl_wremove(constwchar_t*);
    _CRTIMPvoid__cdecl_wperror(constwchar_t*);
    _CRTIMPFILE*__cdecl_wpopen(constwchar_t*,constwchar_t*);
    #endif/*__MSVCRT__*/
    #ifndef__NO_ISOCEXT/*externsinlibmingwex.a*/
    int__cdeclsnwprintf(wchar_t*s,size_tn,constwchar_t*format,...);
    __CRT_INLINEint__cdecl
    vsnwprintf(wchar_t*s,size_tn,constwchar_t*format,__VALISTarg)
    {return_vsnwprintf(s,n,format,arg);}
    int__cdeclvwscanf(constwchar_t*__restrict__,__VALIST);
    int__cdeclvfwscanf(FILE*__restrict__,
    constwchar_t*__restrict__,__VALIST);
    int__cdeclvswscanf(constwchar_t*__restrict__,
    constwchar_t*__restrict__,__VALIST);
    #endif
    #define_WSTDIO_DEFINED
    #endif/*_WSTDIO_DEFINED*/
    #ifndef__STRICT_ANSI__
    #ifdef__MSVCRT__
    #ifndefNO_OLDNAMES
    _CRTIMPFILE*__cdeclwpopen(constwchar_t*,constwchar_t*);
    #endif/*notNO_OLDNAMES*/
    #endif/*MSVCRTruntime*/
    /*
    *OtherNonANSIwidefunctions
    */
    _CRTIMPwint_t__cdecl_fgetwchar(void);
    _CRTIMPwint_t__cdecl_fputwchar(wint_t);
    _CRTIMPint__cdecl_getw(FILE*);
    _CRTIMPint__cdecl_putw(int,FILE*);
    #ifndef_NO_OLDNAMES
    _CRTIMPwint_t__cdeclfgetwchar(void);
    _CRTIMPwint_t__cdeclfputwchar(wint_t);
    _CRTIMPint__cdeclgetw(FILE*);
    _CRTIMPint__cdeclputw(int,FILE*);
    #endif/*Not_NO_OLDNAMES*/
    #endif/*__STRICT_ANSI*/
    #ifdef__cplusplus
    }
    #endif
    #endif/*NotRC_INVOKED*/
    #endif/*_STDIO_H_*/
     
    stdio.h所包含的函数:
     
    文件访问
    fopen
    freopen
    fflush
    fclose
    二进制输入/输出
    fread
    fwrite
    非格式化输入/输出
    fgetc/getc
    fputc/putc
    ungetc
    fgets
    fputs
    格式化输入/输出
    scanf/fscanf/sscanf
    printf/fprintf/sprintf
    perror
    文件定位
    ftell
    fseek
    fgetpos
    fsetpos
    rewind
    错误处理
    feof
    ferror
    文件操作
    remove
    rename
    tmpfile
  • 相关阅读:
    js获取数组,对象的真实长度
    http和https区别
    react调用setstate后发生了什么
    for in for of foreach及map的区别
    事件委托(事件代理)
    CSS隐藏元素的几种方法
    react一些扩展
    [软件构造]异常的捕获与自定义
    [软件构造]可能是笔记总结吧
    计算机系统大作业
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/8425766.html
Copyright © 2020-2023  润新知