stdio.h

stdio.h

一般地,在C語言或C++中,會把用來#include的檔案的擴展名叫 .h,稱其為頭檔案。 #include檔案的目的就是把多個編譯單元(也就是c或者cpp檔案)公用的內容,單獨放在一個檔案里減少整體代碼尺寸;或者提供跨工程公共代碼。在現行的c++版本中,套用這個頭檔案應是#include<stdio.h>

基本介紹

  • 中文名:跨工程公共代碼
  • 外文名:stdio.h
  • 目的:多個編譯單元
  • 提供:跨工程公共代碼
簡介,引用方法,標準函式,檔案內容,檔案說明,宏定義,結構體定義,操作函式定義,

簡介

stdio 就是指 “standard input & output"(標準輸入輸出
stdio.h
所以,原始碼中如用到標準輸入輸出函式時,就要包含這個頭檔案
例如c語言中的 printf("%d",i); scanf("%d",&i);等函式。

引用方法

#include <stdio.h>
(註:在TC2.0中,允許不引用此頭檔案而直接調用其中的函式,但這種做法是不標準的。也不建議這樣做。以避免出現在其他IDE中無法編譯或執行的問題。)

標準函式

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_SUPPORTEDexternFILE(*_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__cplusplusextern"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__cdeclvsnprintf(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.butthestandarddoesn'tsaythattheymustbemacros.WeuseinlinefunctionsheretoallowthefastversionstobeusedinC++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;#elsetypedeflongfpos_t;#endif_CRTIMPint__cdeclfgetpos(FILE*,fpos_t*);_CRTIMPint__cdeclfsetpos(FILE*,constfpos_t*);/**ErrorFunctions*/_CRTIMPint__cdeclfeof(FILE*);_CRTIMPint__cdeclferror(FILE*);#ifdef__cplusplusinlineint__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_FSEEKint__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;elsereturn((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__cdeclvsnwprintf(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所包含的函式:檔案訪問fopenfreopenfflushfclose二進制輸入/輸出freadfwrite非格式化輸入/輸出fgetc/getcfputc/putcungetcfgetsfputs格式化輸入/輸出scanf/fscanf/sscanfprintf/fprintf/sprintfperror檔案定位ftellfseekfgetposfsetposrewind錯誤處理feofferror檔案操作removerenametmpfile

相關詞條

熱門詞條

聯絡我們