GB T 16681-2003 信息技术 开放系统中文界面规范.pdf

上传人:confusegate185 文档编号:219522 上传时间:2019-07-13 格式:PDF 页数:314 大小:7.44MB
下载 相关 举报
GB T 16681-2003 信息技术 开放系统中文界面规范.pdf_第1页
第1页 / 共314页
GB T 16681-2003 信息技术 开放系统中文界面规范.pdf_第2页
第2页 / 共314页
GB T 16681-2003 信息技术 开放系统中文界面规范.pdf_第3页
第3页 / 共314页
GB T 16681-2003 信息技术 开放系统中文界面规范.pdf_第4页
第4页 / 共314页
GB T 16681-2003 信息技术 开放系统中文界面规范.pdf_第5页
第5页 / 共314页
亲,该文档总共314页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、GBj166在1-2003前言本标准代替GB/T16681-1996(信息技术开放系统中文界面规范儿本标准与GBjT16681-1996相比,主要变化如下z1.原国标的国际化函数的字符界面部分16类共77个亟数(原是以UNIXSR飞T4.0为依据的用IS0/1EC 9899,19901 Amd. 1 ,1995 Programming languag臼CAmendment 1 , C lntegrity部规定,作了校订。2.原国标的圆形界面部分的函数是以XllR5为基础的,已过时3玉昆依据XllR6并参黑了一些实现系统,重新制定。3.原因标附录A,是以GB2312-1980为依据制定必POSI

2、XP文特征文件。现吕家要求,中文系统的字符集,应以GB1803 2白白G为依据。为此,制定了以GB18030-2000为依据她posrx中文辛苦征文件,作为本标准的正式文件,放在附录A中。4.参黑Linux的L1l8NUX20白白,补充了在L1l8NUX2000中规定,而原因标中未包含的几十个层际化的字符界面的函数。吕荫,放在附录C中。本标准的附录A是规范位附录,附录B和国古录C是资料性附录。本标准由中华人民共和国信息产业部提出。本标准由信息产业部电子工业标准化研究所归口e本标准起草单位:中软网络技术股份有限公司、信息产业部电子工业标准化研究所。本标准主要起萃入z题明德、冯惠、欧llIl春生、

3、郭峰BE GB/T 16681-2003 f言患技术开敢系统中文界面规范1 范噩本标准定义开放系统中文平台应用程序编程界面,IjO服务功能界Jli以及图形界菌。本标准适用于开放系统中文平台部开发、应用和基于该环境的中文处理软件的集成。2 纲范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注B朔的引用文件,其随后所有豹修改单不包括黯误的内容或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本e凡是不注5期始引用文件,其最新版本适用于本标准。GB/T 1988-19S信息处理信怠交换用七位编码字符集(eqvISO 646 :1 991)

4、GB 2312-1980信怠交换用汉字编码字符集基本集GBI5261-1臼4信息处理七位和八位编码字符集用的控刽功能(抽ISO6429 :1 988) GBI7408-1994 数据元章程交换格式信怠交换a期和时间表示法(eqvISO 8601 , 1988) GBj11383-1989信息处理信息交换用八位代码结构和编码规则(idtISO 4873,186) GB 12345-1的G信息交换用汉字编码字符集辅助集GB 13000. 1-1993 信怠技术通用多人位编码字符集 nt mbtowc( wchar_t善pwc cQnst char赞s,Slze_t时,说明如果s不是空(null)指

5、针,那么m旨to曹c()先确定由s指向的字符的字节数,然后确定与该字符格对应的wchar_t型的宽字符代码值(与空字符等价的宽字符代码值是零入如果该字符是有效的并旦pwc不是空指针,mbtowc()把宽字符代码值存放在pwc援部的目标中。本函数受当前语境LCCTYPE影响,对于依赖于状态的编码,通过将自变量s重为空来洞房本函数,使函数设置为初始状态要后续部源用,如果自变量s非空,则使函数的初始状态根据需要改变e如果编码依赖于状态,那么自变量s为空指针部满周使本亟数返回一个非零值,否则返回零。如果在实现中使用一些特殊字节来改变切换状态,那么这些字节不生成独立的宽字符代码,而是与一个领邻的字符组合

6、在一起。改变当前的LCCTYPE使本函数始初始状态不确定。本函数最多检查s指归的数级中的n个字节。返回当s是空指针时,如果字符编码依赖于状态,那么函数目btowcO返回个非零值g郊果编码不依赖于状态,JiIlJ函数返回零值。当s是非空指针对,如果s指向空字节,那么mbtowcO返回零a或者如果n个或少于2个字节组成了有效韵多字节字符,则返应多字暂的字符数z或者如果是无效字符,则属数返回1并置errno以示出错。不会返回大于n或者MB_CUR_MAX宏的筐。出错mbtowcO函数遇到以下情况,则失败a若gEILSEQ 检测到无效字符序列。b)获取字符的字节数。名称mblen 格式# includ

7、e int mblen(const c且ar传s,sze_t n) ; 说碗如果s不是空指针,mblenO稳定出s指向剖字符串的字节数s除了mbtowc的切换状态不受影响之外,它等价于23 GB/,16681-2003 4 mbtowc( (wchar_t骨)O,s,n);本属数受当前语境LC_CTYPE影哥哥。对于依赖于状态的编码,通过将自变量s置为空来调用本磊数,使运数设置为初始状态p后续的词用.如果自变量s在空,则使画数的初始状态根据需要改变。如果编码依赖于状态,那么自变量s为空指针的读周使本函数返回一个非零值,否则返回零。如果在实现中使用一些特殊字节来改变切换状态,jJ么这些字节不生成

8、独立的宽字符代码,丽是与一个招邻的字符经合在一起。改变当前的LC_CTYPE使本亟数的初始状态不确定。返回当8是空指针肘,如果字符编码依旗子状态,那么函数屈垣len()返回一个非零值g如果编码不依赖于状态,那函数返吕零值。当s是非空指针对,如果s指向空字节,那么mblen仆返回零z或者如果n个或少于n个字节组成了有效的多字节字符,则返因多字节字符的字节数;或者如果是无效字符,则函数返归-1并置errno以示出错。不会返回大于在或者MBCUR MAX宏豹值。出错血blenO函数遇到以下情况,那失败a若3EILSEQ 检测到元效的字符序列。c)把宽字符转换为字符。名称wctom垣格式# inclu

9、deint wctomhC char赘s,wchar_twchar); 说明wctomb size_t mhstowcs( wchar全赞pwcs,const char餐ssize_tn); 说明白bstowcs()把从s指向的数级以初始切换状态开始的字符序列转换成对应部宽字符代码序列,并把不多子n个宽字符代码存放在pwcs指向的数绍中。空符空符将被转换成一个值为零舵宽字符代码)后西部字符不会被检查和转换a涂了mbtowc()切换状态不受影响外,每个字符治转换就像混用mbtowcC)一样。pwcs指向的数组中不会修改多于在个元素,如果复常H!标重叠,其行为未定义。本量E数受当前语境的LC_CT

10、YPE影响。如果pwcs是一空指针,mbstowcsC)返回整个数组要求的长度(不受n的徨部影响。但无值存错。返回如果遇到一无效字符rnbs乞OWCS()返归(size_t)1.并且置errno以示出错$否则mbS乞OWCS()返回被转换的数组元素的个数(或者如果p曹cs是空指针,那是所需的个数),不包括作为终止符的零代码。如果返回信是口,数经不以零代码终止。出错mbstowcs()遇到以下情况,IjjIJ失效。若zEILSEQ 检测到无效的字节序列。时把宽字符串转换为字符串。名称百cstombs格式# i ncl ude Slze_t wcstornbs(char赞s,const wchar

11、 t祷pwcs.sze_t n); 说明wcstombs( )转换自pwcs指向的数经中的宽字符代码序列为以初始切换状态开始的字符序列,并把这些字符存放在s指向的数组中,若超出了总共为n个字节的限制或者存放了个空字节,转换停止。除了wctomb()的切换状态不受影响外,每个宽字符的转换就像词用wctom以)祥。本函数受当前语境的LC_CTYPE影响。s指向的数经中最多修改a个字节2如果复制吕标重叠,其行为未定义。如果s是一个空指针,wcstomb叫)返回整个字符数组所需的字节数不管应的值7。但无值存储。返回如果遇到一宽字符代码,它不对应有效字符单字节或多字节),wcstombs( )返回(si

12、ze_t)1 ;否则,wcstombsC)返回存储在字符数组中的字节数,不包括作为终止符的空字节。如果返回值是。,数组不以空终止。出错5 GBjT 16681-2003 wcstombsO 遇到以下情况,则失败。若zEILSEQ 宽字符码没有相对应的有效字符。2.2 1jO功能5 a)从流中获取宽字符代码。名称fgetwc 格式# nclude 菩includewint_t fgetwc(FILE特S立ream); 说明fgetwc( )从stream指向刘输入流中获取下一个字符如果存在),再将该字符转换成对应的宽字符代码,并且下移相关的流的文件指示器(主日果已定义九如果出现错误,流的文件位置

13、指示器的值不确定efgetwc( )可以为更新而标记stream相关的文件的st_at1me域e如果fgetc(人fgetwc(人fgetws( )、fread( ), fscanf ( )、getc( )、getchar( )、gets( )或scanf( )第一次成功地从strea目中获取的数据,不是前画ungetcC)或者unget胃c()的调用提供始,则为更新商标记st_atme域。返回fgetwc( )的成功词用将从引ream指向的输入流中读取字符并返回对泣的wmtt型的宽字符代码e如果流到了文件尾.流部文件结束指示器将被设置并且fgetwc()返回WEOF,郊果发生渎错误,设置流的

14、出错信怠指示器.fgetwc( )返回WEOF并且置errno以示出错。出错fgetwcO将失败,若需要读数据旦zEAGAIN 对于基于民ream的文件描述符设置。_NONBLOCK标志旦进程在fget胃c()操作期间将被延迟e二EBADF基于stream的文件描述符不是为读打开的有效文件描述符。二EINR读操作由于接收到信号而终止,无数据传送。EIO 发生物理的1/0错误,或在后台进程组中的进程企图从它的控制终端读旦或者进程正忽略或阻断SIGTTIN信号或是孤儿进程纽oJ吃错误也可也实现有关始原因产生。二EOVERFLOW文件是普通文件旦企图在流梧应的最大文件偏移处或超出处读efgetwcC

15、)遇到以下情况,则失效。若:二ENOMEM无充足的存储空何可用。ENXIO 请求不存在她设备或超出了设备的能力cEILSEQ 从输入流得到的数据不形成有效字符。初从波中获取宽字符3名称getwc 格式# indude* nclude wlnt_t get曹cCFILE铸strea四), 说明GB/T 16681-2003 getwc( )等份子fgetwc(),除了作为宏实现,它可能多次计算s白白白,所以自变量不能是具有边缘效应的表达式。返回见fgetwcC)。出错见fgtwcO。c)从标准输入中获取宽字符c名称gerwchar 格式# include wint_t getwchar(void

16、)参说明getwchar( )的功能等价子杏出以stdn)0 返回见fgetwc()。出错见fgetwcO0 d)从流中获取-宽字符串。名称fgetws 格式* nclude非include wchar_t铸fget听到wchart骨ws,ntn ,FILE stream) ; 说明fgetws( )从stream中不断渎取字符并转换成对应的宽字符代码,把结果存放在ws指向的wchar_t型数经中,直到读取了n一1个字符,或者是遇到换行符换行符被转换并存放到w纱,或者遇到文件尾为止。子是用以宽字符表示的空符结束ws宽字符串。如果出现错误,流灼文件位置指示器的值将不确定。fgetws( )可以为

17、更新商标记stream相关始文件的st_atlme域。如果fgetcC)、fgetwc()、fgetwsC人fread( )、fscanf( )、getc( )、getchar( )、gets( )或scanfC )第一次成功地从stream中获取的数据,不是吉trlilungetcC )或者ungetwc()始满用提供的,那为更新商标记8t atlme域。返回直至成功完成,fgetws()返回ws。如果遇到文件尾,设置流的文件结束指示器并且fgetwsC )返回空指针。如果发生读错误,设置流的出错信息指示器,fgetwsC)返回空指针并且重errno以示出错。出错见fgetwcO0 7 GB

18、I16681-2003 E e)在流上输出lt字符代码。名称fputwc 格式# include # includewlnt_乞fputwc(wint_乞wc,FILE赞stream); 说明fputwc( )范与宽字符代码wc对应的字符写到IJstream指向的输出流中血流相关的文伶位置指示器若己定义)指示的位置,并且适当下移流的文件位置指示器。如果文件不能支持定位请求,或者流是以附加方式打开的,字符将附加到输出流后e当写字符出现错误时,输出文件的切换状态将窗在未定义状态。在对同一流鹤fputwc()与下次fflush()或fclose()的成功调用之间,或者与词用exit()或abort(

19、 )之阂,将为更新商标记文件的5tctlme和stmtlme域。返应如果成功.fputwc()返回WCo否则返屈WEOF,设置流揭出错信息指示器,并且置errno以示出错,出错fputwc()将失败,或者流是未缓冲的或在stream的缓冲器中的数据需要写旦zEAGAIN二对于基于stream的文件描述符设置。NONBLOCK标志呈进程在写操作中被延迟。EBADFl EFBIGJ 基本stream的文件描述符不是有效的为写雨打开的文件描述符。企图穹超出最大文件尺寸或进程文件尺寸限制的文件s=EFBIG 文件是普通文件且企留在与相应的流格关的最大镜移处或超出处写。二EIl;TR写操作由于接收了信号

20、而终止且无数据转换。=EIO 发生了物理1/0错误,或进程是后台进程毯的成员企图写至它的控制终端,设置OSTOP进程既不忽略也不阻断SIGTTOU且进程的进程组是孤儿进程组。i地错误也可在实现有关的条件下返回eENOSPC 在包含文件的设备上无自由空间aEPIPE 企图写至未出任何进程为读打开的管道或FIFO。向进程送SIGPIPE信号。fputwc()遇到以下情况,男IJ失败。若zENOMEM 元充足的可用的存储空间。ENXIO 在不存在的设备上请求或请求超出了设备的能力。二EILSEQJ宽字符码wc不梧应有效字符a。把一宽字符输出jlJ流上。名称purwc 格式# include # in

21、cludewnt_t putwc (wint_t wc,FILE是stream)。说骂Zputwc( )等价于fputwc().除了作为宏实现,它可能多次计算stream,所以自变量不能是具有边缘效应的表达式c返回见fputwc仆。出错见fputwc仆。g)把宽字符写至标准输出设备。名称pu艺矶rchar格式1* include wmt_t put冒ch町(wntr_twc); 说明pu乞wchar(wc)等价于putwc(wc ,stdout) , 返回见fputwc(儿出错见fputwc()。U在流上输出宽字符串g名称fput、“5格式1* i口clude 1* includ int fp

22、utws (const wchar_t提ws,FILE费stream); 说明GB/T 16681-2003 fputws( )把与ws指向的以空结束的宽字符事对应的字符写入stream指向的流中。不写入与终止的空宽字符代码幸自对应的字符。在对同一流的fputwc()与下次fflush()或fclose()的成功调用之间,或者与满月exit()或abort( )之间,将为更新而标记文件的st_ct1me手flst_mtime域。返回如果成功,fputws()返回一非负数s否则返回一L置流的出错信息指示器并且置errno以示出绪。出错见fputwc()。i)挖一宽字符代码放回输入流。名称unge

23、t飞“0格式1* include 1* include wint_t ungetwc (wnt_t wc, FILE铸stream)多说明ungetwc( )把与宽字符代码wc相对应的字符放回stream指向的输入流a被放园的字符将9 GB/T 16681-20号3在下次从流中读Bt按放部相反的顺序返图。分子其i胃部文件定位远数(fseek()、fsetpos() 或rewind()的一次成功满用用由s盯eam指向的流)会废弃放回流(stream所指向始流)中的字符。与派对应的外部存储将不做改变e放回一个字符是可以保证的,若ungetwc()在同一流中词用太多次,而没有读文件或者文件定位操作来

24、做间隔,操作可能失败。如果wc的值等于宏WEOF的值,操作失败并旦输入流不做改变eUngetwc( )的成功词用将清除流的文伶结束指示器。在读操作或者清除所有放回字符之后的文件位置指示器的值与放回字符前是一样的。每一次ungetwc()的成功词用将使文件位置指示器减小(减小1或更多),如果在满周之前它的值是零,在满用之后它的值将不确定c返因如果成功,ungetwc()返回与放回字符相对应的宽字符代码佳,否则它返回WEOF,!I:l错ungetwc()遇到以下情况,则失效。若zEILSEQ 检榄到无效字符序列或宽字符码不相应于有效字符e4.2.3 串操作功能10 a)连接两个宽字符串,名称wcs

25、ca乞格式# include wchar乞普wcscat(wchar.立是wsl,. const wchar_t餐ws2); 说明wcscat( ) re ws2指向的宽字符串的副本(包括终止的空宽字符代码)附加到wsl所指的宽字符串的末尾。有s2的起始宽字符覆盖了wsl末尾部空宽字符a如果复制吕标重叠,该行为未定义e返回wcscat( )返回串wsl;不规定发生错误的返回值。出错未定义出错值。bJ两个宽字符串的部分连续。名称wcsncat 格式# include wchar_t每wcsnca(百char_t脊wsl,cons乞wchar_t脊ws2size_n);说明wcsncat( )把w

26、s2指向的数组中的最多a个宽字符代码(空宽字符及其后面的宽字符代码不被磁盘丑国营力nJwsl所指的宽字符串的末尾。Ws2的起始冤字符覆盖了wsl末尾的空宽字符代码e通常在结果中附加一个空宽字符代码。主E果复制目标重叠,该行为未定义e返囚wcsncat ( )返回串wsl;不规定发生错误的返回值。出结未定义出错值。c)比较两个宽字符串名称wcscmp 格式# include nt wcscmp (const wchar_t绳wsl,const wchar t骨ws2), 说电EWC自由p()比较wsl指向的宽字符串和ws2指冉的宽字符摩。GBjT 16681-2003 非零返回值的符号也被比较的

27、吕标中的第一对不同的宽字符码的值之鹤不同的符号稳定。返回wcscmp( )比较完成后,根据wsl指向的字符大于,等于或小于ws2指向豹字符z返图一大于、等于或小于零幸亏整数。出错未定义击键筐。出部分比较两个宽字符串e名称wcsncmp 格式# include 百chart杨飞,cscpy(wch盯乞缝wsl,const wchar_t势ws2); 说明wcscpy( )把ws2指向的宽字符串包括终止的空宽字符代码)复制ilJ哺所指的数组中。如果复制吕标重叠,该行为未定义。返囡wcscpy( )返回串矶sl;不规定发生错误的返回值。11 GB斤16681-200312 出错未定义出错筐。f)董事

28、分复哥哥一宽字符串,名称飞II!csncpy格式# nclude wchar 艺脊wcsncpy(wchar_ t排wsl,const wchar_乞赘ws2,sizen); 说哥哥wcsncpy ( )把ws2指i萄街宽字符串中最多8个字符复制到wsl所指的数注中(空宽字符后峦始宽字符代码不被复制)。如果复制目标重叠,该行为未定义e若由飞.vs2指向的数组是短于E的宽字符串,空宽字符码附加至llwsl指向的数组中的复制之后,直至写入总共n个宽字符码。i屋gwcsncpy( )返画串wsl;不规定发生错误的返回筐。出错未定义出错值。g)得到宽字符$约长度e名称wcslen 格式*1 nclud

29、e size_t wcslen (const wc坦ar乞缝ws);说明wcslen( )计算ws指向的宽字符E争中宽字符代码个数,不包括终止的空宽字符码。返回wcslen( )返回ws中的宽字符数1不规定发生错误的返臼蜜。出错未定义出错值3U宽字符串扫描操作。名称wcschr 格式工享include wchar艺善wcsrchr(const wchar_ t将WS,有nt_twc); 说明wcsrchr( )确定WS所指向的宽字符E争中最后一次出王军wc的位置owc必须是可说明为wchar t型的字符并且是在当前语境中与一杏效字符相对应的宽字符a空宽字符码被认为是宽字符iIl拍一部分e返回如

30、果成功,“csrchr()返囚一指向宽字符代码部指针;否则,如果将rc没有在宽字符串中出现,返回一空指针aIII错未定义出错值2j)为宽字符码扫描宽字符串。名称wcspbrk 格式1* incl叫 wchar_乞铸wcsph玄k(cons乞wchart祷飞sl,cOnst wchar_t善ws2); 说晓胃cspbrk()稳定ws2J!,吁指的宽字符事中任一宽字符代码在审51所指的宽字符率中第一次出现豹位置3返回如果成功1wcspbr主()返回一指向宽字符代码的指针g否则,如果ws2中的宽字符没有在w51出现,返回一空指针。出错未定义出错值k)获取宽字符子串的长度。名称wcsspn 格式1*

31、include Slze乞wcsspn(constwchar_乞餐wsl,cons乞胃C仨盯.t赞ws2); 说嘿wcsspn( )计算wsl指向的宽字符串的初始段最大长度,该段完全由ws2所指宽字符串中的宽字符代码组成。返医wcsspn( )返但率百鼠的长度g不规定发生错误的返回值。出错未定义出错值e13 GB/T 16681-2003 14 )获取补充的宽字符子串的长度。名称wcscspn 格式# include size_t wcscspn (const wchar二铸wsl, const wchar_t铸ws2); 说明wcscspnC )计算wsl指向的宽字符串部初始段最大长度,该段

32、完全也不是ws2所指宽字符串中的宽字符代码组成。返回wcscspnC )运应率wsl中初始段的民度;不窥定发生错误的返国值。出错未定义出错值。血把宽字符率分裂成标记。名称wcstok 格式# include wchar_乞铃wcstok(wchar_t铮wsl,const vchar t铸ws2,wha主主安份ptr)易说明wcstokC )的连续调m将把wsl厉指向的宽字符串分穰成为一标记序列,其每一个标i己被ws2指向的宽字符E告中的宽字符分痛第三个自变量指向满用者提供的wcha玄2型指针,wcsto益。在其中存入为连续扫描相同宽字符串所需的信息。在连续调用中,第一次调用担wsl作为函数的

33、第一个自变量,磁后的词用m空指针作为它的第一个自变量a每次满周ws2所指冉的分隔符串可以不同在连续词用中,第一次满用在wsl指的宽字符串中搜索第一个不包括在ws2当前所指的分震符串中的宽字符代码。如果没找到这样的宽字符代码,那wsl_13斤指始宽字符串中没有标记,那wcs艺。以返回一空指针。如果找到了,它便是第一个标记的开始。wcsto弘从标记约开始处起搜寻当前分隔符串中包含的宽字符代码。奴果没有找到这样的宽字符代弱,则当前标记延伸至wsl所指的宽字符率由专结尾,并且挺直后的搜寻将返图空指针。如果找到了这样部宽字符.它将被一个空宽字符覆盖,该空宽字符结束当前标记。W臼抽泣()保存指向后续宽字符

34、代码的指针,以便下次搜寻从这里开始。随后的每一次源用,用空指针作为第一个自变量,从保存的指针开始并且按照上述过程继续搜寻。返应如果成功.wcstok( )返回指冉一个标记部第一个宽字符代码的指针p否则,如果没有标记,wcstok C )返回一空指针。出错未定义出错值。时寻找宽字符子惠。GBI16681-2003 名称WCSWCS 格式样inc1udeWC妇盯t赘wcswcs(const wchar_t弟wsl,const wchar _t善胃s2); 说明wcswcs ( )确定ws2所指的宽字符串中的宽字符序列(不包括结尾的空宽字符在wsl所指的宽字符串中第一次出现的位置e返回如果成功,wc

35、swcs( )返归磷定的宽字符串指针c否赂,如果宽字符串没被找到.返回一空指针。如果ws2指向一零长度的宽字符事,远数返回wsL,出错未定义出错筐。4.2.4 打印功能a)打印格式输出。名称Iprintf、printf、sprintf格式“* include int fprintf (FILE善stream,const char每form时,); int printf (const cha玄善format,int sprintf (char祷s,const char椅format,.) 说明注,JIt处只说羽有关中文处理能部分,Iprintf( )输出到命名的输出流中,printf()输出jJ

36、J标准输出stdout中;sprintf ( )纪后在哥有空字节跟腿的事输出至us开始剖连续字节中z它是用户的确应以保证有足够的空间可用e每个亟数按照format转换格式化打印。form且是一个以初始转换状态开始和结束的字符串,10口nat启零或多个命令组成z普通字符,它将被复制到输街派;每个转换说明符.都将匹配零或多个自变量。如果没有足移始自变量与format匹戳,结果未定义。如果自变量超过格式转换所需要的数目,多余的自变量被求值或被忽略。%n$将代替转换说明符%,n是1,(NL_ARGMAX口中的个一卡进辙整数,它给出自变量序列中自变量的位置。转换说明符适用于format后面的自变量序列中

37、的2个自变量.而不适用更后面的没有用到的自变量。这种特点为特定语言按次fF选择自变量提供了格式E主义。格式串中包含%nS形式的转换说明符,自变量序列中编号的自变量可以根据需要重复使用。在一个包含%n$转换说明符的格式串中,个域的宽度和精确度由祷阻$指定,m是口,(NL_ARGMAX门中的一个十送审J整数,它绘出自变量在自变量序列中的位置,该自变量15 GB/T 16681-2003 表示一整自变量的域宽或精确度。例如=printf(“ %1 $ d , %2 $.费3$d,%4$.赞3$ dn飞hour.mln, precisio口,sc); format中可以含有编号自变量说明符(P%n$和

38、祷n$ ).或者无编号自变量说明符(P% 和普).但通常不同对含有二者,只有一个例外,%可以与多n$形式混用。编号自变量说P)j符与无编号自变量说确丰守在-format中混用没被定义。当周编号自变量说明时,如果说项第a个自变量,男,需要从第1到第n-l个前导自变量都已在格式率中被说明。标志符及其意义z十进制转换(%i,%d,%Ut“L%g或%G)的整数部分用于分号格式化。其他转换没被定义。使用了非货币分组符号。转换符及其意义gC wchar_t型的自变量被转换成表示一个字符的字节序列,并且写出结果字符。如果指定了精确度,则结果没有定义e转换类似于wctomb(在一个语境中,如果编码依赖于状态,

39、则与流的切换状态有关的行为依赖于具体的实现。S l变量必须是wchar_t型的数组指针。数组中以空宽字符结束但不包括结束空宽字符的宽字符代码序列被转换成一字节序列,并且写出结果字节,如果指明了精确度,则不超出限制数的字节和完整约字符被写出。如果没有指明精确度,或者精确度大于转换的字节数纽约大小,那么宽字符数级必须用一空宽字符结束。转换类似于wcstombs() 主明strfmon把自format指向的串所控梢的字符放人s指向的数组中,多子maXS1Ze的字节不放入数经中。格式是一个字符串,它包含两种类型的目标z简单复制到输出流部普通字符和转换说明,每一个转换说晓都使零个或多个自变量被转换和格式

40、化。如果没有足够的自变量涓于格式化,结果没被定义。如果格式化结束,而自变量多余,那多余的自变量被忽略e转换说明白i且,下序列组成z%字符任选的标志任逸的字段宽度径选灼左稽度圭逸的右稽度要求确定执行转换的转换字符。标志能规定一个或多个以下任选标志以控锐转换=f 一等号(二)后面跟随单个字符JF自于作为数字填充字符。填充字符必须能用单字节表示以与精度和宽度数一起工作。默认的数字填充字符是空格字符。i比标志并不影响字段宽度,它总是用空格字符旗充。除非规定左精度,比标志被忽略见下面人不用分组字符格式化货币总数。默认是插入分组字符若语境中定义人+or( 规定可表示的正或负货币总数的样式。只能规定一个+或

41、(。若规定+.GB/T 1号68卜-2003使用对于十和-始语境中的等效符号例如,在USA中2若正为空串,若负用。若规定(,负数用括号括起来。若禾规定标志,m十样式e从输出转换禁止货币符号e规定对齐a若i比标志存在所有字段是左对齐的(填补到右边而不是有对齐的。字段宽度四十进制数字串E规定以字节表示的最小字段宽度在这种情况下转换结果是右对齐始若规定一标志则是左对齐部九默认是0。左精度*l n *1号后报十进制数字串n规定预料格式化到基数字符左边始数字的最右幸言度大数。此逸项能用于从对多次满用的格式化输出对齐在相同列。它也能用于用特殊字符填充未用的位置如$袭警备123.450此选项引起被格式化幸亏

42、总数好像有由n规定剖数字数。若要求多子n数字位置,j比转换说明被忽略。超出实际要求的数字位置用数字填充字符见上商提到的二f标志若分组未用标志禁止,在填充字符若有)加入前插入分组字符。分组分原符不应用于填充字符,甚至它们是数字为保证对齐,出现在格式化的输出例如货币或符号中的数之前或之后的经一字符按需要附加用空格字符以使官们的正或负格式等长。. 点号后跟一十进制数字串户规定在基数字符之后约数字数。若右稽度户的值是0,元基数字符出现。若未包括右精度,用当前语境的默认规定。正在格式化的总数在格式化前舍人至规定的数字数。转换字符转换字符和它们的意义是zn ?。语演信息i比double自变量,按黑话境的国

43、际货币格式格式化。此double自变量,按黑话境的国家货币格式格式化。转换至%;元自变量转换。整个转换说明必须是%。程序的语境的LC_MONEARY类别影响此函数的行为,包括货币基数字符(它可能与白LC_NUMERIC类别影确的数字基数字符不同、组分属符、货币符号与格式。00际货币符号应与.一致。若1fU1X$lze的值大于SSIZE_MAX,结果是与实现有关的e返回如果结果的字节总数包括结尾的空字节不超过maxsize,9!tlstrfmon( )返回s指向的数组中放人的字节数,不包括结尾的空字节。否则,返回-1.数经费号内容不确定,并且窒error以示出镑。出错strfmonO函数失效,若

44、z=E2BIG二由于在缓冲器中缺少空间使转换停止。4.2.6 a期和时间a)把自其昌和时间转换成串。名称strftme 格式尊include 19 GBjT 16681-2003 20 size _t strftime (c-h盯铸s,sze_t maxsize, const char链format,const struct tm铸timptr); 说碗strftime( )把白fo口nat指向的串所控制灼字符放入s指冉的数组中。Format串包含零个或多个转换说明和普通字符。一个转换说明包括一个%字符毅一个确定转换说明动作部转换字符。所有普通字符包括结尾空字节)不被改变地复制到数组中。如果复

45、制吕标重叠,结果没被定义。多于maxslze的字节将不放入数毯中。如下所示,每个转换说现被恰当的字符序列替换。恰当的字符序列自程序的语境和艺lmptr所指向的结构中的值确定。注g此处只说哥哥中文处理需要增郎的部分%C 被十进制的世纪号99J(年号除以1并且取整替换。%D 与%m%d%y一样。%e 被十进制约月中日期l31J替换g一个单一数字前加一个空格。%h 与%b一祥。%n 被一个换行符替换。%玄被上牛、下午豹标记替换s在POSIX语境中等份子%I,%M , %S%P o %R 被24汩的标记 char铸就rptme(const char普buf.,constchar善format, str

46、uct tm善艺团), 说哥哥strptime ( )利用format指定的格式,把bu所指豹字符串转换成存储子tm所指的乞阻结构中的值.Format出零或多个指令组成e每个指令自下列之一组成z一个或多个空白字符(由sspace ( )确定),一个普通字符不是Yo,也不是空白字符h或者一个转换说顷。每个转换说明白一个%字符后跟指定替换的转换字符组成。两个转换说确之间必须有空白字符或其他F字母数字字符。支持以下转换说明2%a 是易中约旨,用语境的周日名事可以规定续写或全名。%A 与%a裙同。%b 是月,用语境豹月名z可以规定缩写或全名。%B 与%b格罚。%c 自语境的适当的日郑和时间表示替换。兴

47、C是世纪号页,99J,允许前导。但不要求,%d 月中约5口,31J;允许直在导。但不要求c%D 是日期,像%m/%di%y.% 与%d相同e%且与%b格同。%H 是小时(24h剥)0.23J,允许前导。但不要求e%1 是小时(l2hIlJ)口,12J;允许前导3但不要求。均是年凶日数口,366J;允许前导G但不要求。%m 是月数1.12J,允许前导。但不要求。%M 是分=0-59J,允许前导。但不要求。%n 是任臼空,%p 是活境的参数,等效于H.m或p.m. %r 若当前语境的LCTIME部分中t_fmt_a四pm不是空串,12-ha才钟时间用AM/PM标记:在POSIX语携中,这等效于%1

48、,%孔,%S%P. %R 是时间如%江,%M.21 GB月16681-200322 %S 是秒白,61J,允许前导。但不要求e%t 是任一白空。全运T是时!可如%H,%M,%S,%口是年的周数(星期日是周约第一天)主日十进司J数00.53J,允许前导。但不要求。%w 是周日如十进制数缸,句,0表示星期日(Sundayl,允许前导。但不要求e%w 是年的局数(星其在一是屑的第一天如十送制数00,53J,允许前导。但不要求。%x 是日期,用语境的日期格式。%X 是时间,用语境始传部格式e%y 是世纪中的年。范围69-99中的值涉及20世纪0969至199包含),在范围00-68中的值涉及21世纪(

49、2000至2068包含。允许前导。但不要求。%Y 是年,包括世纪(例如,1988人% 出%替换。修改的命令某些命令能被E和0修改符字符修改以指示应用可替换的格式或说明而不是由未修改的命令所用的正常的命令。若巧替换格式或说明在当前语境中不存在,行为好像用未修改的命令e多.fEc是语境的可替换的适当主911草草和时间表示,%EC 是i吾境的可替换表示中基本年点号)的名。%Ex 是语境的可替换部日期表示c%EX 是语境的可替换的时间表示。%Ey 是在当前语境的可替换表示中从%EC(只是年)章节偏移5%EY 是全可替换的年表示。%Od 是用语境的可替换数字符号的月的日z允许前导司但不要求。%Oe 与%Od格局。%OH 是ffl吾境的可替换数字符号的小时(24hS才钟%01 是用语境的可替换数字符号钓小时02hB1铃),%Om 是ffli吾境的可替换数字符号的月。%OM 是用语境的可替换数字符号的分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 国家标准

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1