目录搜索
AlgorithmsAlgorithms(算法)bsearchbsearch_sqsortqsort_sAtomic operationsAtomic operations library(原子操作库)ATOMIC_*_LOCK_FREEatomic_compare_exchange_strongatomic_compare_exchange_strong_explicitatomic_compare_exchange_weakatomic_compare_exchange_weak_explicitatomic_exchangeatomic_exchange_explicitatomic_fetch_addatomic_fetch_add_explicitatomic_fetch_andatomic_fetch_and_explicitatomic_fetch_oratomic_fetch_or_explicitatomic_fetch_subatomic_fetch_sub_explicitatomic_fetch_xoratomic_fetch_xor_explicitatomic_flagatomic_flag_clearatomic_flag_clear_explicitATOMIC_FLAG_INITatomic_flag_test_and_setatomic_flag_test_and_set_explicitatomic_initatomic_is_lock_freeatomic_loadatomic_load_explicitatomic_signal_fenceatomic_storeatomic_store_explicitatomic_thread_fence(线程围栏)ATOMIC_VAR_INITkill_dependencymemory_order(内存排序)C keywordsauto(自动存储)break(跳出循环)C keywords(关键词)casecharconst(常量修饰符)continuedefault(预设运算式)dodouble(双精度浮点型)elseenum(枚举类型)extern(全局变量)float(浮点数)forfortrangoto(goto语句)if(if语句)inline(行内函式)intlong(长整型)register(寄存器变量)restrict( restrict类型限定符)returnshortsignedsizeof(sizeof运算符)static(静态变量)struct(结构体)switch(switch语句)typedef(typedef关键字)union(联合体)unsigned(无符号)void(空类型)volatile(volatile变量)while(while语句)_Alignas_Alignof_Atomic_Bool_Complex_Generic_Imaginary_Noreturn_Static_assert_Thread_localC language#define directive#elif directive#else directive#endif directive#error directive#if directive#ifdef directive#ifndef directive#include directive#line directive#pragma directivealignas(对齐指定符)Alternative operators and tokens(替代运算符和令牌)AnalyzabilityArithmetic operatorsArithmetic typesArray declaration(数组声明)Array initialization(阵列初始化)ASCII ChartAssignment operators(赋值运算符)types(atomic类型限定符)Basic conceptsBit fields(位域)break statementC languageC Operator Precedencecast operatorcharacter constant(字符字面量)Comments(注释符)Comparison operators(比较运算符)compound literals(符合字面量)Conditional inclusion(条件包含)Conformance(一致性)const type qualifier(const 限定符)Constant expressions(常量表达)continue statementDeclarations(声明)do-while loopEnumerations(枚举类型)Escape sequences(转义字符)Expressions(表达式)External and tentative definitions(外部和暂定的定义)File scope(文件范围)floating constant(浮点常量)for loopFunction declarations(函数声明)Function definitions(函数声明)FunctionsGeneric selection泛型选择goto statementIdentifier(标示符)if statementImplicit conversions(隐式转换)Increment/decrement operators(前置/后置操作符)Initialization(初始化)inline function specifier(内联函式)integer constantLifetime(生命期)Logical operators(逻辑运算符)Lookup and name spacesMain function(主函式)Member access operators(会员接入运营商)Memory modelObjects and alignment(字节对齐)Order of evaluation(评估顺序)Other operatorsPhases of translation(翻译阶段)Pointer declarationPreprocessor(预处理)restrict type qualifier(restrict类型限定符)return statementScalar initialization(标量类型初始化)Scope(范围)sizeof operator(sizeof运算符)Statements(陈述)static assert declaration(静态断言声明)Static storage duration(静态存储周期)Storage-class specifiers(存储类说明符)string literals(字符串字面量)Struct and union initialization(结构体与联合体初始化)Struct declaration(结构体声明)switch statementThread storage duration(线程存储时间)TypeType(类型)Typedef declaration(Typedef声明)Undefined behavior(未定义行为)Union declaration(联合体声明)Value categories(值类别)Variadic arguments(变长参数宏)volatile type qualifier(volatile 类型限定符)while loop_Alignof operator_Noreturn function specifierDate and timeasctime(asctime函数)asctime_sclockCLOCKS_PER_SECclock_tctime(ctime函数)ctime_sDate and time utilities(日期和时间库)difftime(计算两个时间的间隔)gmtimegmtime_slocaltimelocaltime_smktime(将时间结构数据转换成经过的秒数的函数)strftime(格式化输出时间函数)timetimespectimespec_gettime_ttmwcsftime(格式化时间宽字符)Dynamic memory managementaligned_allocC memory management library(内存管理库)callocfree(释放动态分配空间的函数)malloc(动态分配内存空间的函数)realloc(重新分配内存空间的函数)Error handlingabort_handler_sassert(断言)constraint_handler_terrno(错误报告)Error handling(错误处理)Error numbers(错误个数)ignore_handler_sset_constraint_handler_sstatic_assertFile input/outputclearerr(清除/复位)fclosefeofferrorfflush(清空文件缓冲区)fgetcfgetposfgetsfgetwcfgetwsFile input/outputfopenfopen_sfprintffprintf_sfputcfputsfputwcfputwsfreadfreopenfreopen_sfscanffscanf_sfseekfsetposftellfwidefwprintffwprintf_sfwritefwscanffwscanf_sgetcgetchargetsgets_sgetwcharperrorprintfprintf_sputcputcharputsputwcputwcharremoverenamerewindscanfscanf_ssetbufsetvbufsnprintfsprintfsscanfsscanf_sswprintfswprintf_sswscanfswscanf_stmpfiletmpfile_stmpnamtmpnam_sungetcungetwcvfprintfvfprintf_svfscanfvfscanf_svfwprintfvfwprintf_svfwscanfvfwscanf_svprintfvprintf_svscanfvscanf_svsnprintfvsprintfvsscanfvsscanf_svswprintfvswprintf_svswscanfvswscanf_svwprintfvwprintf_svwscanfvwscanf_swprintfwprintf_swscanfwscanf_sLocalization supportlconvLC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIMElocaleconvLocalization supportsetlocaleNumericsabsacosacosfacoshacoshfacoshlacoslasinasinfasinhasinhfasinhlasinlatanatan2atan2fatan2latanfatanhatanhfatanhlatanlcabscabsfcabslcacoscacosfcacoshcacoshfcacoshlcacoslcargcargfcarglcasincasinfcasinhcasinhfcasinhlcasinlcatancatanfcatanhcatanhfcatanhlcatanlcbrtcbrtfcbrtlccosccosfccoshccoshfccoshlccoslceilceilfceillcexpcexpfcexplcimagcimagfcimaglclogclogfcloglCMPLXCMPLXFCMPLXLCommon mathematical functionscomplexComplex number arithmeticconjconjfconjlcopysigncopysignfcopysignlcoscosfcoshcoshfcoshlcoslcpowcpowfcpowlcprojcprojfcprojlcrealcrealfcreallcsincsinfcsinhcsinhfcsinhlcsinlcsqrtcsqrtfcsqrtlctanctanfctanhctanhfctanhlctanldivdouble_terferfcerfcferfclerfferflexpexp2exp2fexp2lexpfexplexpm1expm1fexpm1lfabsfabsffabslfdimfeclearexceptfegetenvfegetexceptflagfegetroundfeholdexceptferaiseexceptfesetenvfesetexceptflagfesetroundfetestexceptfeupdateenvFE_ALL_EXCEPTFE_DFL_ENVFE_DIVBYZEROFE_DOWNWARDFE_INEXACTFE_INVALIDFE_OVERFLOWFE_TONEARESTFE_TOWARDZEROFE_UNDERFLOWFE_UPWARDFloating-point environmentfloat_tfloorfloorffloorlfmafmaffmalfmaxfmaxffmaxlfminfminffminlfmodfmodffmodlfpclassifyFP_INFINITEFP_NANFP_NORMALFP_SUBNORMALFP_ZEROfrexpfrexpffrexplHUGE_VALHUGE_VALFHUGE_VALLhypothypotfhypotlIilogbilogbfilogblimaginaryimaxabsimaxdivINFINITYisfiniteisgreaterisgreaterequalisinfislessislessequalislessgreaterisnanisnormalisunorderedlabsldexpldexpfldexplldivlgammalgammaflgammalllabslldivllrintllrintfllrintlllroundllroundfllroundlloglog10log10flog10llog1plog1pflog1pllog2log2flog2llogblogbflogbllogflogllrintlrintflrintllroundlroundflroundlMATH_ERREXCEPTmath_errhandlingMATH_ERRNOmodfmodffmodflnanNANnanfnanlnearbyintnearbyintfnearbyintlnextafternextafterfnextafterlnexttowardnexttowardfnexttowardlNumericspowpowfpowlPseudo-random number generationrandRAND_MAXremainderremainderfremainderlremquoremquofremquolrintrintfrintlroundroundfroundlscalblnscalblnfscalblnlscalbnscalbnfscalbnlsignbitsinsinfsinhsinhfsinhlsinlsqrtsqrtfsqrtlsrandtantanftanhtanhftanhltanltgammatgammaftgammaltrunctruncftrunclType-generic math_Complex_I_Imaginary_IProgram supportabortatexitat_quick_exitexitEXIT_FAILUREEXIT_SUCCESSgetenvgetenv_sjmp_buflongjmpProgram support utilitiesquick_exitraisesetjmpSIGABRTSIGFPESIGILLSIGINTsignalSIGSEGVSIGTERMsig_atomic_tSIG_DFLSIG_ERRSIG_IGNsystem_ExitStringsatofatoiatolatollbtowcc16rtombc32rtombchar16_tchar32_tisalnumisalphaisblankiscntrlisdigitisgraphislowerisprintispunctisspaceisupperiswalnumiswalphaiswblankiswcntrliswctypeiswdigitiswgraphiswloweriswprintiswpunctiswspaceiswupperiswxdigitisxdigitmblenmbrlenmbrtoc16mbrtoc32mbrtowcmbsinitmbsrtowcsmbsrtowcs_smbstate_tmbstowcsmbstowcs_smbtowcmemchrmemcmpmemcpymemcpy_smemmovememmove_smemsetmemset_sNull-terminated byte stringsNull-terminated multibyte stringsNull-terminated wide stringsstrcatstrcat_sstrchrstrcmpstrcollstrcpystrcpy_sstrcspnstrerrorstrerrorlen_sstrerror_sStrings librarystrlenstrncatThread supportcall_oncecnd_broadcastcnd_destroycnd_initcnd_signalcnd_timedwaitcnd_waitmtx_destroymtx_initmtx_lockmtx_plainmtx_recursivemtx_timedmtx_timedlockmtx_trylockmtx_unlockonce_flagONCE_FLAG_INITthrd_busythrd_createthrd_currentthrd_detachthrd_equalthrd_errorthrd_exitthrd_jointhrd_nomemthrd_sleepthrd_successthrd_timedoutthrd_yieldThread support librarythread_localtss_createtss_deleteTSS_DTOR_ITERATIONStss_gettss_setType supportBoolean type support libraryFixed width integer typesFLT_EVAL_METHODFLT_ROUNDSmax_align_tNULLNumeric limitsoffsetofptrdiff_tsize_tType supportVariadic functionsVariadic functionsva_argva_copyva_endva_listva_start
文字

所述<stdio.h>头部提供通用文件操作支持和建筑材料功能与窄字符输入/输出能力。

<wchar.h>标头宽字符输入/输出功能提供功能。

I / O流是FILE只能通过类型指针访问和操作的类型对象FILE*(注意:虽然可以FILE通过解引用和复制有效的FILE*方法创建类型的本地对象,但使用I中的此类副本的地址/ O函数是未定义的行为)。每个流都与外部物理设备(文件,标准输入流,打印机,串行端口等)相关联。

I / O流可用于未格式化和格式化的输入和输出。它们是区域设置敏感的,并且可以根据需要执行宽/多字节转换。所有流都访问相同的语言环境对象:最近安装的语言环境对象setlocale

除了访问设备所需的系统特定信息(例如POSIX文件描述符)之外,每个流对象还包含以下内容:

1)(C95)字符宽度:未设置,缩小或宽

2)缓冲状态:无缓冲,行缓冲,完全缓冲。

3)缓冲区,可以由用户提供的外部缓冲区替换。

4)I / O模式:输入,输出或更新(包括输入和输出)。

5)二进制/文本模式指示器。

6)文件结束状态指示器。

7)错误状态指示器。

8)文件位置指示器(类型对象fpos_t),对于宽字符流,它包含解析状态(类型为mbstate_t(C95)的对象)。

9)(C11)当多线程读取,写入,定位或查询流的位置时,用于防止数据竞争的重入锁。

狭窄和广泛的方向

新开的流没有方向。第一次调用fwide或访问任何I / O函数可以确定方向:宽I / O函数使得流的宽度更大,窄I / O函数使得流的范围更窄。一旦设置,方向只能随着改变freopen。窄I / O函数不能在面向广泛的流上调用; 宽泛的I / O功能无法在窄定向的流上调用。宽I / O函数在宽字符和多字节字符之间转换,就像通过调用mbrtowcwcrtomb。与在程序中有效的多字节字符串不同,文件中的多字节字符序列可能包含嵌入的空值,不必在初始转换状态下开始或结束。

POSIX要求当前安装的C语言环境的LC_CTYPE构面在其方向变宽时存储在流对象中,并且用于此流上将来的所有I / O,直到方向改变为止,而不管后续调用如何setlocale

二进制和文本模式

文本流是由为行(零个或多个字符加上终止字符的有序序列'\n')。最后一行是否需要终止'\n'是实现定义的。可能需要在输入和输出中添加,更改或删除字符,以符合OS中表示文本的约定(特别是Windows OS上的C流转换\n\r\n输出并转换\r\n\n输入)。

只有满足以下所有条件,才能保证从文本流中读入的数据与之前写入该流的数据相等。

  • 数据只包括打印字符及控制字符\t\n(具体地,在Windows操作系统中,字符'\0x1A'终止输入)

  • 否\ n紧接在空格字符前面(空格字符在紧接在\ n读取时可能消失之前写出)

  • 最后一个字符是\ n

二进制流是可以透明地记录的内部数据的字符的有序序列。从二进制流中读入的数据总是等于先前写入该数据流的数据。实现只允许在流尾添加一些空字符。宽二进制流不需要在初始转换状态下结束。

POSIX实现不区分文本流和二进制流(没有针对\ n或任何其他字符的特殊映射)。

函数

| 文件访问|

|:----|

| 在头文件<stdio.h> |中定义

| fopenfopen_s(C11)| 打开一个文件(函数)|

| freopenfreopen_s(C11)| 使用不同的名称(函数)|打开现有流

| fclose | 关闭文件(功能)|

| fflush | 使输出流与实际文件(函数)|同步

| setbuf | 为文件流(函数)|设置缓冲区

| setvbuf | 设置文件流(函数)|的缓冲区及其大小

| 在头文件<wchar.h>中定义

| fwide(C95)| 在宽字符I / O和窄字符I / O(函数)|之间切换文件流

| 直接输入/输出|

| 在头文件<stdio.h> |中定义

| fread | 从文件(函数)|读取

| fwrite | 写入文件(函数)|

| 未格式化的输入/输出|

| 窄字符|

| 在头文件<stdio.h> |中定义

| fgetcgetc | 从文件流(函数)|获取字符

| fgets | 从文件流(函数)|获取字符串

| fputcputc | 将一个字符写入文件流(函数)|

| fputs | 将字符串写入文件流(函数)|

| getchar | 从stdin(function)|读取一个字符

| getsgets_s(直到C11)(自C11)| 从stdin(function)|读取一个字符串

| putchar | 将一个字符写入stdout(function)|

| 放入| 将一个字符串写入stdout(function)|

| ungetc | 将字符放回到文件流(函数)|中

| 宽字符|

| 在头文件<wchar.h>中定义

| fgetwcgetwc(C95)| 从文件流(函数)|获取宽字符

| fgetws(C95)| 从文件流(函数)|获取宽字符串

| fputwcputwc(C95)| 将宽字符写入文件流(函数)|

| fputws(C95)| 将宽字符串写入文件流(函数)|

| getwchar(C95)| 从标准输入(函数)|读取一个宽字符

| putwchar(C95)| 将宽字符写入stdout(function)|

| ungetwc(C95)| 将宽字符放回到文件流(函数)|中

| 格式化输入/输出|

| 窄字符|

| 在头文件<stdio.h> |中定义

| scanffscanfsscanfscanf_sfscanf_ssscanf_s(C11)(C11)(C11)| 从stdin,文件流或缓冲区(函数)|读取格式化的输入

| vscanfvfscanfvsscanfvscanf_svfscanf_svsscanf_s(C99)(C99)(C99)(C11)(C11)(C11)| 使用变量参数列表(函数)|从stdin,文件流或缓冲区中读取格式化的输入

| printfprintfsprintfsnprintfprintf_sfprintf_ssprintf_ssnprintf_s(C99)(C11)(C11)(C11)(C11)| 将格式化输出打印到标准输出,文件流或缓冲区(函数)|

| (C11)(C11)(C11)(C11)(C11)| 使用可变参数列表(函数)|将格式化输出打印到标准输出,文件流或缓冲区

| 宽字符|

| 在头文件<wchar.h>中定义

| wscanffwscanfswscanfwscanf_sfwscanf_sswscanf_s (C95)(C95)(C95)(C11)(C11)(C11)| 从stdin,文件流或缓冲区(函数)|读取格式化的宽字符输入

|  vwscanfvfwscanfvswscanfvwscanf_svfwscanf_svswscanf_s (C99)(C99)(C99)(C11)(C11)(C11) | 使用变量参数列表(函数)|从stdin,文件流或缓冲区中读取格式化的宽字符输入

|  wprintffwprintfswprintfwprintf_sfwprintf_sswprintf_ssnwprintf_s (C95)(C95)(C95)(C11)(C11)(C11)(C11) | 将格式化的宽字符输出打印到stdout,文件流或缓冲区(函数)|

| vwprintfvfwprintfvswprintfvwprintf_svfwprintf_svswprintf_svsnwprintf_s (C95)(C95)(C95)(C11)(C11)(C11)(C11) | 使用变量参数列表(函数)|将格式化的宽字符输出打印到标准输出,文件流或缓冲区

| 文件定位|

| 在头文件<stdio.h> |中定义

| ftell | 返回当前文件位置指示符(功能)|

| fgetpos | 获取文件位置指示符(函数)|

| fseek | 将文件位置指示器移动到文件(功能)|中的特定位置

| fsetpos | 将文件位置指示器移动到文件(功能)|中的特定位置

| 倒带| 将文件位置指示器移动到文件(函数)|中的开头

| 错误处理|

| 在头文件<stdio.h> |中定义

| clearerr | 清除错误(函数)|

| feof | 检查文件结束(函数)|

| ferror | 检查文件错误(函数)|

| perror | 显示与当前错误对应的字符串到stderr(function)|

| 对文件进行操作|

| 在头文件<stdio.h> |中定义

| 删除| 擦除文件(功能)|

| 重命名| 重命名文件(函数)|

| tmpfiletmpfile_s(C11)| 返回一个指向临时文件(函数)|的指针

| tmpnamtmpnam_s(C11)| 返回一个唯一的文件名(函数)|

类型

| 在头文件<stdio.h> |中定义

|:----|

| 类型| 定义|

| FILE | 类型,能够保存控制CI / O流|所需的所有信息

| fpos_t | 类型,能够在文件|中唯一地指定位置和多字节分析器状态

| 在头文件<stdio.h> |中定义

|:----|

| stdinstdoutstderr | 与FILE *类型的输出流表达式相关联的类型FILE *的表达式与与错误输出流(宏常量)相关联的FILE *类型的输出流表达式相关联。

| EOF | int类型的整型常量表达式和负值(宏常量)|

| FOPEN_MAX | 可同时打开的文件数(宏常量)|

| FILENAME_MAX | char数组需要的大小来保存最长的支持文件名(宏常量)|

| BUFSIZ | setbuf()(宏常量)|使用的缓冲区的大小

| _IOFBF_IOLBF_IONBF | setvbuf()指示完全缓冲的I / O参数给setvbuf()指示缓冲的I / O参数指向未缓冲的I / O(宏常量)的setvbuf()。

| SEEK_SETSEEK_CURSEEK_END | fseek()表示从fileargument的开头搜索到fseek(),表示从当前文件positionargument寻找fseek(),指示从文件末尾搜索(宏常量)。

| TMP_MAXTMP_MAX_S(C11)| 可由tmpnam生成的唯一文件名的最大数目tmpnam_s(宏常量)可生成的唯一文件名的最大数目|

| L_tmpnamL_tmpnam_s(C11)| 字符数组所需的大小,以保存tmpnamsize的结果,以便保存tmpnam_s(宏常量)的结果。

参考

  • C11标准(ISO / IEC 9899:2011):

    • 7.21输入/输出<stdio.h>(p:296-339)

    • 7.29扩展的多字节和宽字符实用程序<wchar.h>(p:402-446)

    • 7.31.11输入/输出<stdio.h>(p:456)

    • 7.31.16扩展的多字节和宽字符实用程序<wchar.h>(p:456)

    • K.3.5输入/输出<stdio.h>(p:586-603)

  • C99标准(ISO / IEC 9899:1999):

    • 7.19输入/输出<stdio.h>(p:262-305)

    • 7.24扩展的多字节和宽字符实用程序<wchar.h>(p:348-392)

    • 7.26.9输入/输出<stdio.h>(p:402)

    • 7.26.12扩展的多字节和宽字符实用程序<wchar.h>(p:402)

  • C89 / C90标准(ISO / IEC 9899:1990):

    • 4.9 INPUT / OUTPUT <stdio.h>

    • 4.13.6输入/输出<stdio.h>

上一篇:下一篇: