Format的事无巨细用法,C语言常用转义字符

语言常用转义字符表

在MFC程序中,使用CString来管理字符串是三个很不利的选料。CString不仅可以够拍卖Unicode标准的字符串,也能够管理ANSI标准的字符串。CString的Format方法给大家进行字符串的转移带来了相当大的惠及,比方大面积的int、float和double这几个数字类型转变为CString字符串只需一行代码就足以兑现。

 

C语言的printf输出格式调节

  先看看Format用于转移的格式字符:

关于出口对齐

int main(int argc, char* argv[])
{
 char insertTime[20] = {“1234567890”};
 double insertTime1 = 12321;

 printf(“|%-15s|/n”,insertTime);  //左对齐,十四个人长度,相当不足补空格
 printf(“|%15s|/n”,insert提姆e);  //右对齐,拾陆个人长度,非常不够补空格
 printf(“|%015s|/n”,insertTime);     //右对齐,15位长度,不够补0
 printf(“|%-15.2f|/n”,insertTime1); 
//左对齐,15个人长度,带两位小数,缺乏补空格

 return 0;
}

 

printf我们都熟练,但是能真正将其用法弄透的评估价值很少见。转一篇,改天整理。

转义字符

含义

ASCII码(16/10进制)

\o

空字符(NULL)

00H/0

\n

换行符(LF)

0AH/10

\r

回车符(CR)

0DH/13

\t

水平制表符(HT)

09H/9

\v

垂直制表(VT)

0B/11

\a

响铃(BEL)

07/7

\b

退格符(BS)

08H/8

\f

换页符(FF)

0CH/12

\’

单引号

27H/39

\”

双引号

22H/34

\\

反斜杠

5CH/92

\?

问号字符

3F/63

\ddd

任意字符

三位八进制

\xhh

任意字符

二位十六进制

  %c                 单个字符

参数详解

%a             浮点数、十六进制数字和p-记数法(C99)
%A    浮点数、十六进制数字和p-记法(C99)
%c     八个字符(char)

%C           一个ISO宽字符

%d    有暗号十进制整数(int)(%e    浮点数、e-记数法
%E    浮点数、E-记数法
%f     单精度浮点数(暗许float)、十进制记数法(%.nf
 这里n表示精确到小数位后n位.十进制计数)

%g    依据数值差别自动选拔%f或%e.
%G    依照数值差别自动选取%f或%e.
%i              有暗记十进制数(与%d同样)
%o    无符号八进制整数
%p      指针
%s     对应字符串char*(%S            
对应宽字符串WCAH汉兰达*(%u     
无符号十进制整数(unsigned
int)
%x    使用十六进制数字0f的无符号十六进制整数 
%X      使用十六进制数字0f的无符号十六进制整数
%%     打字与印刷二个百分号

%I64d 用于INT64 或者 long long

unsigned
long long

①%:表示格式表明的初阶符号,不可缺点和失误。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示钦命空位填0,如省略表示钦赐空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于注脚出口的实型数的小数位数。为钦赐n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符校订为short型。

---------------------------------------
格式字符
格式字符用以钦命输出项的数据类型和输出格式。
 ①d格式:用来输出十进制整数。有以下二种用法:
%d:按整型数据的骨子里尺寸输出。
%md:m为钦点的输出字段的拉长率。假设数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

②o格式:以无符号八进制格局出口整数。对长整型能够用”%lo”格式输出。一样也能够钦定字段宽度用“%mo”格式输出。
例:
   main()
   { int a = -1;
     printf(“%d, %o”, a, a);
   }
  运营结果:-1,177777
 
程序深入分析:-1在内部存款和储蓄器单元中(以补码格局寄存)为(1111111111111111)2,转变为八进制数为(177777)8。
③x格式:以无符号十六进制形式出口整数。对长整型能够用”%lx”格式输出。一样也足以钦赐字段宽度用”%mx”格式输出。
④u格式:以无符号十进制格局出口整数。对长整型能够用”%lu”格式输出。同样也足以钦命字段宽度用“%mu”格式输出。
⑤c格式:输出二个字符。
⑥s格式:用来输出一个串。有几中用法
%s:举个例子:printf(“%s”, “CHINA”)输出”CHINA”字符串(不包涵双引号)
%ms:输出的字符串占m列,借使字符串本人尺寸大于m,则突破获m的限量,将字符串全部出口。若串长小于m,则左补空格。
%-ms:如若串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。那n个字符输出在m列的左侧,左补空格。
%-m.ns:个中m、n含义同上,n个字符输出在m列范围的侧边,右补空格。固然n>m,则自动取n值,即确定保证n个字符平常输出。
⑦f格式:用来输出实数(富含单、双精度),以小数情势出口。有以下二种用法:
%f:不钦赐宽度,整数部分全勤输出并出口6位小数。
%m.nf:输出共占m列,当中有n位小数,若数值宽度小于m左端补空格。 
%-m.nf:输出共占m列,当中有n位小数,若数值宽度小于m右端补空格。
⑧e格式:以指数方式出口实数。可用以下情势:
%e:数字有的(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含义与前无差别。此处n指数据的数字有的的小数位数,m表示一切输出数据所占的小幅。
⑨g格式:自动选f格式或e格式中不够长的一种输出,且不出口无意义的零。

---------------------------------------
有关printf函数的越来越求证:
假定想出口字符”%”,则应该在“格式调控”字符串中用接二连三四个%表示,如:
printf(“%f%%”, 1.0/3);
输出0.333333%。

---------------------------------------

对于单精度数,使用%f格式符输出时,仅前7位是可行数字,小数6位.
对于双精度数,使用%lf格式符输出时,前贰拾一个人是实惠数字,小数6位.

—————————–可变宽度参数
对于m.n的格式还足以用如下方法表示(例)
char ch[20];
printf(“%*.*s\n”,m,n,ch);
前边的*概念的是总的宽度,前面包车型客车概念的是出口的个数。分别对应外面包车型大巴参数m和n
。作者想这种办法的功利是能够在说话之外对参数m和n赋值,进而调节输出格式。

 

参照他事他说加以考察原著

1.
 freemantseprintf 格式化输出符号详细表达

2.
 xuemiao1234printf
格式对齐

 

1.转移表达符

字符常量中利用单引号和反斜杠以及字符常量中利用双引号和反斜杠时,都不能够不使用转义字符表示,即在那一个字符前拉长反斜杠。
   在C程序中选择转义字符\ d d d或者\ x h
h可以低价灵活地意味着放肆字符。\ d d
d为斜杠前边跟三个人八进制数,该肆人八进制数的值即为相应的八进制A S C I
I码值。\ x前边跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S
C I I码值。

  %d                 十进制整数(int)

%a浮点数、十六进制数字和p-记数法

利用转义字符时须求专心以下难题:
1)
转义字符中只可以选用小写字母,每一种转义字符只好当作多个字符。
2) \v 垂直制表和\f
换页符对荧屏未有其他影响,但会影响打字与印刷机实践响应操作。
3) 在C程序中,使用不可打字与印刷字符时,日常用转义字符表示

  %ld                十进制整数(long)

%c字符

注:
1,\v垂直制表和\f换页符对显示器未有任何影响,但会影响打字与印刷机推行响应操作。
2,\n其实应该叫回车换行。换行只是换一行,不改换光标的横坐标;回车只是回到行首,不更改光标的纵坐标。
3,\t 光标向前挪动四格或八格,能够在编写翻译器里设置
4,\’ 在字符里(即单引号里)使用。在字符串里(即双引号里)无需,只要用
‘ 就可以。
5,\? 其实不须要。只要用 ? 就能够了(在windows VC6 和tc2 中表达)。

  %f                 十进制浮点数(float)

%d有号子十进制整数


  %lf                十进制浮点数(double)

%f浮点数(包括float和doulbe)

格式调节符仿效:

  %o                 八进制数

%e浮点数指数输出[e-记数法]


  %s                 字符串

%g浮点数不显无意义的零”0″

对陆十四人整数的输入输出,在POJ上的C++情形下(即VC++),六二十位整数是:
__int64
输入输出格式为”%I64d”.

  %u                 无符号十进制数

%i 有标记十进制整数

在G++碰着下, 六十八个人整数是
long long
输入输出格式为”%lld”.

  %x                 十六进制数

%u无符号十进制整数%o八进制整数

域宽及精度的描述

  1、int转换为CString:

%x十六进制整数0fe.g.0x1234

  M:域宽,即对应的出口项在输出设备上所占字符数

  CString str;

%p指针

      若:实际多少上升的幅度>M,按实际上数据大幅输出。

  int number=15;

%s字符串

        实际数据大幅度<M,左侧补空。

  //str=”15″

%%输出字符%

  N:精度,说明出口的实型数的小数位数。

  str.Format(_T(“%d”),number);

2.标志

几点表明:

  //str=”
15″(前边有三个空格;4表示将占用4位,倘诺数字超过4位将出口全数数字,不会截断)

左对齐:”-“比如:”%-20s”

    编写翻译程序只是反省printf
函数的调用方式,不深入分析格式调控字符串,若是格式字符与输出项的品种不相配,不开展类型转换。(输出的数为专擅)

  str.Format(_T(“%4d”),number);

右对齐:”+”比如:”%+20s”

    格式字符要用小写字母。

  //str=”0015″(.4代表将攻下4位,假如数字超过4位将出口全部数字,不会截断)

空格:若符号为正,则显示空格,负则呈现”-“比如:”%6.2f”

    格式调整字符串中得以包涵转义字符。

  str.Format(_T(“%.4d”),number);

#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在出口时加前缀0x;对e,g,f类当结果有小数时才给出小数点。

    格式调节字符串中的普通字符则形容输出。

  long转变为CString的艺术与地方相似,只须求把%d改为%ld就可以了。

printf的格式调整的全体魄式:

    输出项的参数除了常数、变量外仍是能够是表达式、函数调用。

  2、double转换为CString:

%-0m.nl或h格式字符

       
%g,%f和%e那多少个格式用于打字与印刷浮点值。
%g格式用于打字与印刷那些无需按列对齐的浮点数极度有用。其职能有二:
一,去掉该数尾多余的零(未有直达七个人的数)
二,保留柒人有效数字(多余陆位的)
%e格式用于打字与印刷浮点数时,一律呈现地选用指数形式:比方:输出圆周率时是:3.141593e+00
两侧的分别:
%g格式打字与印刷出的数是一齐6位有效数字
%e格式打印出小数点后的6位有效数字
%f禁用指数格局来表示浮点数。由此圆周率输出为:3.141593
(但只顾它的精度供给:也是小数点后6位有效数字)
(8)%%格式用于打印八个%字符。
(9)%E和%G只是在输出时用大写字母(E)替代了小写字母(e)

  CString str;

上边临构成格式表达的各个加以注明:

                输出正负号的技能,举个例子:
printf(“%+d %+d %+d\n”,-5,0,5);
若果在中间加个“+”号就行。效能是出口符号位(即,数的正负号)
假诺不期望正数的眼下出现‘+’号,可用上面的办法
假使在中间加个“ ”号(即:空格)就行。比如:
职能:即使二个数是非负数,就在它的前头插入二个空格。
int i;
for(i=-3;i<=3;i++)
printf(“% d\n”,i); //注意%和d之间有三个空格

  double num=1.46;

①%:表示格式表达的起先符号,不可缺点和失误。

           

  //str=”1.46″

②-:有-表示左对齐输出,如省略表示右对齐输出。

sscanf()的采纳技艺:
疏解字符串,相当多功用都急需正则表明式的文化,所以就介绍一下最简易的两种用sscanf来解释字符串
的用法。

  str.Format(_T(“%lf”),num);

③0:有0意味钦赐空位填0,如省略表示内定空位不填。

  1. char str[100],str1[100],str2[100];
    gets(str);
    sscanf(str,”%s%s”,str1,str2);
    将读入的一整行字符串按空格,制表符或回车符分割成多少个字符串。
    2
    取钦命长度的字符串。如在下例中,取最大尺寸为4字节的字符串。
    sscanf(“123456 “, “%4s”, str);

  //str=”1.5″(.1表示小数点后留1位,小数点后超过1位则四舍五入)

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于注解出口的实型数的小数位数。未内定n时,隐含的精度为n=6位。

主干整型:多个字节,拾陆个bit(位)

  str.Format(_T(“%.1lf”),num);

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符改良为short型。

11 11 11 11 11 11 11 11   等于
65535.

  //str=”1.4600″

格式字符

11 11 11 11 11 11 11 10    
等于 -2.

  str.Format(_T(“%.4f”),num);

格式字符用以钦赐输出项的数据类型和出口格式。

负数的首先位(符号位)为1。负数的补码怎么获得:原码取反加一。2的二进制数为:00
00 00 00 00 00 00 10,取反就十二分11 11 11 11 11 11 11
01,然后加1,二进制数逢二进一,所以就得出-2 的二进制代码。

  //str=” 1.4600″(前面有1个空格)

①d格式:用来输出十进制整数。有以下两种用法:

有暗号的整型数能够用 %d 输出。

  str.Format(_T(“%7.4f”),num);

%d:按整型数据的其实尺寸输出。

无符号的整型数能够用 %u 输出。

  float调换为CString的情势也同位置相似,将lf%改为f%就足以了。

%md:m为钦赐的输出字段的上升的幅度。假使数据的位数小于m,则左端补以空格,若大于m,则按其实位数输出。

Computer里存的数字都是二进制数,最高位是符号位依然数据位,能够由输出格式符来调节。

  3、将十进制数调换为八进制:

%ld:输出长整型数据。

二进制数调换八进制数:多个 1 相应二个 7

  CString str;

②o格式:以无符号八进制方式出口整数。对长整型能够用”%lo”格式输出。一样也得以钦赐字段宽度用“%mo”格式输出。

二进制数錾十六进制数:贰位二进制对应壹位十六进制,三个1
对应二个 f。

  int num=255;

例:

说明: 

  //str=”377″

main(){inta=-1;

格式字符:c   输出二个字符。

  str.Format(_T(“%o”),num);

printf(“%d,%o”,a,a);}

     s   输出一个字符串。

  //str=”00000377″

运营结果:-1,177777

     e   以指数方式出口实型数。

  str.Format(_T(“%.8o”),num);

程序深入分析:-1在内部存款和储蓄器单元中为(1111111111111111)2,转变为八进制数为8。

     f    
以小数情势出口实型数。

Format是八个很常用,却又就好像很烦的章程,以下是它的总体概貌,以供我们查询之用:  

③x格式:以无符号十六进制方式出口整数。对长整型能够用”%lx”格式输出。一样也得以钦点字段宽度用”%mx”格式输出。

     g   自动决定输出格式为e和f中非常短的一种,不打字与印刷无效的零。

格式化字符串forma(“%d”,12)意思是将八个整形的格式化的字符(作者感觉是维持其形象不变) 
1).格式表明总是以%字符初步,以下是见仁见智门类数据的格式方式%号后的验证: 
d输出带符号十进制数 
o输出无符号八进制数 
x输出无符号十六进制数 
u输出无符号数 
c输出单个字符 
s输出一串字符 
f输出实数(6位小数) 
e以指数情势出口实数 
g选择f与e格式中输出宽度非常小的格式,不输出0 
ld输入输出long型数据 
lf输入输出double型数据 
m数据输出宽度为m 
.n输出小数位数为n 

④u格式:以无符号十进制情势出口整数。对长整型能够用”%lu”格式输出。同样也得以钦点字段宽度用“%mu”格式输出。

     %   输出%。

一、字符串 

⑤c格式:输出叁个字符。

注意:对于单精度数,使用 %f
格式符输出时,仅前7位是有效数字,小数6位。

首先看它的宣示:  
function Format(const Format: string; const Args: array of const): string; overload;  
事实上Format方法有三个种样式,别的一种是八个参数的,首要分裂在于它是线程安全的,  
但并非常的少用,所以这边只对第4个介绍:  

⑥s格式:用来输出一个串。有几中用法

   对于双精度数,使用 %lf
格式符输出时,前拾伍个人是可行数字,小数6位。

function Format(const Format: string; const Args: array of const): string; overload;  
Format参数是一个格式字符串,用于格式化Args里面包车型地铁值的。Args又是如何呢,  
它是二个变体数组,即它里面能够有多少个参数,並且每种参数能够分裂。  
如以下例子:  
Format(“my name is %6s”,”wind”);  
回去后就是  
my name is wind  

%s:例如:printf(“%s”,”CHINA”)输出”CHINA”字符串。

长度校勘符

今天来看Format参数的详细意况:  
Format里面能够写普通的字符串,譬如”my name is”  
但有一点格式指令字符具有优秀意义,比方”%6s”  

%ms:输出的字符串占m列,如字符串本人尺寸大于m,则突破获m的范围,将字符串全部输出。若串长小于m,则左补空格。

  l:对整型内定长整型long

格式指令具备以下的样式:  
“%” [index “:”] [“-“] [width] [“.” prec] type  
它是以”%”初叶,而以type结束,type表示四个具体的体系。中间是用来  
格式化type类型的命令字符,是可选的。  

%-ms:借使串长小于m,则在m列范围内,字符串向左靠,右补空格。

      例:%ld , %lx , %lo ,
%lu

先来探视type,type能够是以下字符:  
d 十制数,表示三个整型值  
u 和d同样是整型值,但它是无符号的,而只要它对应的值是负的,则赶回时  
是贰个2的二15遍方减去这么些相对值的数  
如:Format(“this is %u”,-2);  
归来的是:this is 4294967294  
f 对应浮点数  
e 科学表示法,对应整型数和浮点数,  
比如Format(“this is %e”,-2.22);  
回去的是:this is -2.2三千0E+000  
等一下再作证若是将数的精度降低  
g 那些只好对应浮点型,且它会将值中多余的数去掉  
比如Format(“this is %g”,02.200);  
归来的是:this is 2.2  
n 只好对应浮点型,将值转化为号码的样式。看三个例子就精晓了  
Format(“this is %n”,4552.2176);  
回去的是this is 4,552.22  
小心有两点,一是只表示到小数后两位,等一下说怎么消除这种场地  
二是,固然小数未有被截断,它也不会也像整数部分同样有逗号来分其他  
m 钱币体系,但有关货币类型有更加好的格式化方法,这里只是轻便的格式化  
除此以外它只对应于浮点值  
Format(“this is %m”,9552.21);  
返回:this is ¥9,552.21  
p 对应于指针类型,重临的值是指针的地点,以十六进制的款型来代表  
例如:  
Format(“this is %p”,p);  
Edit1的源委是:this is 0012F548  
s 对应字符串类型,不用多说了吧  
x 必需是贰个整形值,以十六进制的花样重临  
Format(“this is %X”,15);  
返回是:this is F  

%m.ns:输出占m列,但只取字符串中左端n个字符。那n个字符输出在m列的出手,左补空格。

    对实型内定双精度double

项目陈述完结,上边介绍格式化Type的吩咐:  
[index “:”] 这些要怎么表达呢,看三个例子  
Format(“this is %d %d”,12,13);  
里头第一个%d的目录是0,第3个%d是1,所以字符展现的时候  
是这样 this is 12 13  

%-m.ns:当中m、n含义同上,n个字符输出在m列限制的左侧,右补空格。假设n>m,则自动取n值,即确定保障n个字符不奇怪输出。

           例:%lf

而一旦您这么定义:  
Format(“this is %1:d %0:d”,12,13);  
那么再次回到的字符串就改成了  
this is 13 12  
昨金蕊通了吗,[index “:”] 中的index提示Args中参数字展现示的  
顺序  

⑦f格式:用来输出实数,以小数格局出口。有以下二种用法:%f:不点名宽度,整数片段百分之百出口并出口6位小数。

   
h:只用于整型的格式字符校订为short

还应该有一种境况,借使这么Format(“%d %d %d %0:d %d”, 1, 2, 3, 4) ; 
将返回1 2 3 1 2。  
万一您想回到的是1 2 3 1 4,必得那样定:  
Format(“%d %d %d %0:d %3:d”, 1, 2, 3, 4) ; 
但用的时候要注意,索引无法越过Args中的个数,不然会唤起特别  
如Format(“this is %2:d %0:d”,12,13);  //error
由于Args中只有12 13 两个数,所以Index只能是0或1,这里为2就错了  
[width] 内定将被格式化的值占的大幅度,看贰个例子就明白了  
Format(“this is %4d”,12);  
输出是:this is 12  
以此是相比便于,然而只要Width的值小于参数的长度,则没有效益。  
如:Format(“this is %1d”,12);  
输出是:this is 12  
[“-“] 这些钦定参数向左齐,和[width]合在一同最能够看来效果:  
Format(“this is %-4d,yes”,12);  
输出是:this is 12 ,yes  

%m.nf:输出共占m列,个中有n位小数,如数值宽度小于m左端补空格。%-m.nf:输出共占n列,当中有n位小数,如数值宽度小于m右端补空格。

           例:%hd , %hx , %ho ,
%hu

[“.” prec] 钦点精度,对于浮点数效果最棒:  
Format(‘this is %.2f’,[‘1.1234]);  
输出 this is 1.12  
Format(‘this is %.7f’,[‘1.1234]);  
输了 this is 1.1234000  

⑧e格式:以指数方式出口实数。可用以下格局:

格式输出字符:printf

而对于整型数,尽管prec比方整型的位数小,则并未功用  
反之比整形值的位数大,则会在整型值的先头以0补之  
Format(‘this is %.7d’,[1234]);  
输出是:this is 0001234]  

%e:数字有的输出6位小数,指数部分占5位或4位。

应用:向终点输出若干个品类任意的多少。

对于字符型,刚好和整型值相反,假使prec比字符串型的尺寸大  
则未有效果,反之比字符串型的长短小,则会截断尾巴部分的字符  
Format(‘this is %.2s’,[‘1234’]);  
输出是 this is 12  

%m.ne和%-m.ne:m、n和”-”字符含义与前毫无二致。此处n指数据的数字有的的小数位数,m表示整个输出数据所占的幅度。

款式:printf
(格式调控符,输出列表)

而地方说的那一个例子:  
Format(‘this is %e’,[-2.22]);  
回到的是:this is -2.23000000000000E+000  
怎么去掉多余的0呢,这些就行啊  
Format(‘this is %.2e’,[-2.22]);  

⑨g格式:自动选f格式或e格式中十分的短的一种输出,且不出口无意义的零。

说明:

好了,第二个总算讲完了,应该对她的利用很熟习了吧  

---------------------------------------

格式调控符:%  格式表明指导符。

m_result.Format(“您选的城市是:\r\n %s,\r\n您选的人是:\r\n%s”,city1 +  city2 +  city3,people); 
  UpdateData(0);

有关printf函数的更加的表明:

      -  钦点左对齐输出。

格式小结: 
(1)最常用的格式是%d,含义是以10进制格局打字与印刷二个整数。 
举个例子出口的卡尺头是负数,则,输出的率先个字符正是‘-’号 
(2)%u格式与%d格式类似,只可是要求打字与印刷无标记10进制整数。 
(3)%o格式央浼输出8进制整数 
(4)%x和%X格式哀告输出16进制整数。 
%x格式中用小写字母a,b,c,d,e,f来代表10到15里面包车型地铁数 
%X格式中用大写字母A,B,C,D,E,F来代表10到15之间的数 
共同点:8进制和16进制整数再三再四作为无符号数管理的。 
(5)%s格式用于打字与印刷字符串,与之对应的参数应该是贰个字符指针,待输出的字符始于该指针所指向的地址,直到现身叁个空字符(’\0’) 
才终止。 
(6)%c格式用于打字与印刷单个字符:比方: 
printf(“%c”,c); 等价于 putchar?; 
(7)%g,%f和%e那多少个格式用于打字与印刷浮点值。 
%g格式用于打字与印刷这个没有要求按列对齐的浮点数非常有用。其效果有二: 
一,去掉该数尾多余的零(未有直达伍位的数) 
二,保留七人有效数字(多余八个人的) 
%e格式用于打字与印刷浮点数时,一律突显地应用指数格局:举个例子:输出圆周率时是:3.141593e+00 
互相的区分: 
%g格式打字与印刷出的数是一同6位有效数字 
%e格式打字与印刷出小数点后的6位有效数字 
%f禁用指数格局来表示浮点数。因而圆周率输出为:3.141593 
(但只顾它的精度供给:也是小数点后6位有效数字) 
(8)%%格式用于打字与印刷贰个%字符。 
(9)%E和%G只是在输出时用大写字母(E)代替了小写字母(e) 
除此以外索要留心的有的知识点: 

设若想出口字符”%”,则应当在“格式调控”字符串中用一而再多个%表示,如:

      0  钦命空位填零。

*************************************** 
对齐准绳: 
(1)当内定宽度当先要出口位数时,数右对齐,左端补空格 
当前缀’-‘号时,想要数左对齐,右端补空格 
大大的前提:独有当“钦赐宽度”存在时,前缀’-‘才有含义。 
经验:一般的话,左端对齐的款式看上去要美貌整齐一点。 
*************************************** 
输出正负号的技艺:(记住)譬喻: 
printf(“%+d %+d %+d\n”,-5,0,5); 
若果在中间加个“+”号就行。成效是出口符号位(即,数的正负号) 
如果不期望正数的前方出现‘+’号,可用下边的点子 

printf(“%f%%”,1.0/3);

      m.n
钦命输出域宽度及精度。

*************************************** 
只要在中游加个“ ”号(即:空格)就行。(记住)比如: 
作用:即使一个数是非负数,就在它的后面插入四个空格。 
int i; 
for(i=-3;i<=3;i++) 
 printf(“% d\n”,i); //注意%和d之间有一个空格 
出口结果如下: 
-3 
-2 
-1 




难点:假使‘+’和‘ ’同期出现在“中间”时,要以‘+’为准。 
八个标记的共同点:用于对齐输出的数:(特别对于小数来讲) 
 三种格式:%+e和% e 
C语言中挑宛城的输入输出函数有: 
putchar ():把变量中的贰个字符常量输出到荧屏显示屏上; 
getchar ();从键盘上输入二个字符常量,此常量正是该函数的值; 
printf ();把键盘中的各个数据,加以格式调整输出到显示屏显示器上; 
scanf ();从键盘上输入各个数据,并寄存到程序变量中; 
puts ():把数组变量中的叁个字符串常量输出到显示屏显示器上; 
gets ():从键盘上输入三个字符串常量并置于程序的数组中. 
sscanf(); 从多少个字符串中提取各个数据。 
 putchar() 和 getchar() 顾名思议正是从输入流中获取贰个字符和出口五个字符,相比较轻易,不再多讲。 
事比如下: 
char c = getchar(); 
putchar?; 
 格式化输入输出scanf()和printf()是最平价的,所以重要讲一下。 
printf(): 
一般方式: 
printf(“格式调控”.输出列表);  
eg : printf(“a=%d,b=%f,c=%c\n”,a,b,c); 
1;格式调节. 
格式调节是用双引号括起来的字符串,也称”调换调整字符串”,它饱含以下两有的音讯. 
格式表达:由”%”和格式字符组成,如%d,%f,%c,他的职能是把出口数据转变为钦定格式输出,格式的求证总是由”%”字符初步的.

输出0.333333%。

      l.h 输出长度的匡正。

常见字符:要求原样输出的字符,只怕是一些有优秀含义的字符,如\n,\t。 
2;输出列表 
不怕须要输出的局地数据,也足以是表明式,假如在函数中需求输出多个变量或表明式,则要用逗号隔离. 
 一些特殊字符的输出: 
单引号,双引号,和反斜杠的出口在前边加转义字符”\” 
如:”\’” , “\”” , “\\” 
%的出口用五个连在一同的%%,即printf(“%%”); 

对此单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.

     格式字符   钦点输出的数据类型。

常用的格式表明如下: 
格式字符 
d 以十进制形式出口带符号整数(正数不出口符号)  
o 以八进制情势出口无符号整数(不出口前缀O)  
x 以十六进制方式出口无符号整数(不出口前缀OX)  
u 以十进制方式出口无符号整数  
f 以小数形式出口单精度实数  
lf以小数格局出口双精度实数 
e 以指数方式输出单、双精度实数  
g 以%f%e中非常短的输出宽度输出单、双精度实数  
c 输出单个字符  
s 输出字符串  
 这里重申一下:英特网海人民广播广播台大稿子都说f 和lf是一致的,即不管单精度,双精度浮点数,都得以用f, 但小编在POJ上做过测量试验,输出Double时用f确实也能够 ,但读入时,用f就报WA,所以我们倘诺对Double进行读写的话,都用lf吧。 
聊到Double,再啰嗦一句,提出我们要用到浮点数时都用Double,不要用float,因为在数不尽场馆下,float精度远远不足会导致WA。 
特殊: 
对陆十五个人整数的输入输出,在POJ上的C++意况下(即VC),陆16人整数是: 
__int64 (注意int后面是五个下划线) 
输入输出格式为”%I64d”. 
在G++景况下(即Dev C++) 陆十一位整数是 
long long 
输入输出格式为”%lld”. 

对此双精度数,使用%lf格式符输出时,前13个人是行得通数字,小数6位.

说明:

出口宽度 
  用十进制整数来代表输出的最少位数。 注意若实际位数多于定义的增加率,则按其实位数输出, 若实际位数少于定义的宽窄则补以空格或0。 
精度 
  精度格式符以“.”开始,后跟十进制整数。意义是:假使出口数字,则象征小数的位数;假设出口的是字符, 则意味着输出字符的个数;若实际位数大于所定义的精度数,则截去超越的部分。 
标记格式字符  
– 结果左对齐,左边填空格  
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号 
例如: 
double c=24212345.24232; 
printf(“%020.4”); 表示输出准确到小数点后4位,输出占十几人,若有空闲的位补0. 
 scanf: 
scanf的数不清用法都以和printf对应的,故不再赘言。 
说一下scanf三个专程好用的地点,便是足以滤去一些不想要的事物。 
比方表达如下: 
例如说输入为日期 yyyy-mm-dd,就足以这么写: 
int year,moth,day; 
scanf(“%d-%d-%d”,&year,&moth,&day); 
再比如: 
scanf(“%3d %*3d %2d”,&m,&n); 输入113 118 69回车(系统将113赋予m,将69赋予n,因为*号表示跳过它对应的多少所以118不授予任何变量) 
puts()用的十分少,且基本都能用printf()取代,故不再多说。 
gets()是从输入流中获取一行字符串纳入字符数组中: 
char in[100]; 
gets(in); 
世家可能最轻易出错的地点正是字符串的输入,所以强调一下: 
能拓宽字符,字符串输入的有: 
getchar(), scanf(“%c”); scanf(“%s”), gets() 
个中getchar() 和 scanf(“%c”)的功用是一模二样的。 
内需专心的是,那四个函数读入的是输入流中当前地方的字符, 
比如: 
 scanf(“%d”,&n); 
 c = getchar(); 
一旦输入 67/ (若是“/”代表回车),则率先个scanf读入二个板寸67后,当前输入流的岗位是67随后,即指向回车符,所以第4个getchar()读入的就是一个回车符了,即 c = ‘\n’。 
无差别于,gets()也是从当前岗位读入一行字符串。 
比如: 
scanf(“%d”,&n); 
gets(str); 
此时读入字符数组中的字符串正是“\n” 了 
因此通常在用scanf读入七个非字符串的品种之后,若是要读入字符,或字符数组,都用二个非常的getchar()把回车符读掉,若前边跟的不停四个回车符,大概还恐怕有剩余的空格的话,就用gets()读掉。 
 和上述差别的是,scanf(“%s”) 读入的时候是会忽略掉空格,回车和制表符的。並且以空格,回车和制表符作为字符串结束的标识。 
 平时会有那样的题,输入第一行是一个卡尺头,接下去每行的首先个是贰个字符,用来代表某种操作,后边再跟一些数额,例如: 

A 100 2 
B 23 
A 23 89 
B 34 
像这种输入就必要当心,读入字符时实际不是读成回车符。 
为了防守意外,笔者一般是那样管理那类输入的: 
char model[2]; 
Scanf(“%d”,&n); 
for(…,…,…){ 
 scanf(“%s”,model); 
 if(model[0] == ‘A’){ 

else{ 


 sscanf(): 
sscanf()平常用来分解字符串,功能十分有力,但众多功力都亟待正则表明式的文化,所以就介绍一下最简便的二种用法,我们假使想询问更加多以来,本人去英特网找呢。 
1. 
char str[100],str1[100],str2[100]; 
gets(str); 
sscanf(str,”%s%s”,str1,str2); 
将读入的一整行字符串按空格,制表符或回车符分割成三个字符串。 

取内定长度的字符串。如在下例中,取最大尺寸为4字节的字符串。 
  sscanf(“123456 “, “%4s”, str);

对此m.n的格式还是可以用如下方法表示charch[20];

格式字符:钦定输出项的数据类型和出口格式。

转自:http://blog.csdn.net/wangkaishou/archive/2010/08/28/5846152.aspx

printf(“%*.*s\n”,m,n,ch);

     d  有记号十进制整数。

前边的*概念的是总的宽度,后面包车型客车*概念的是出口的个数。分别对应外面包车型地铁参数m和n。作者想这种格局的实惠是足以在言辞之外对参数m和n赋值,进而决定输出格式。

     o  无符号八进制数。

明天又来看一种输出格式%n能够将所出口字符串的长度值赋绐二个变量,见下例:

     x  无符号十六进制数。(小写的x格式中用小写字母a,b,c,d,e,f来代表10到15以内的数,大写的X则用小写的ABCDEF来表示10到15中间的数)

intslen;

     u  不带符号的十进制整数。

printf(“helloworld%n”,&slen);试行后变量被赋值为11。

输出8字节的平头时 输出格式应为%llu %lld %llo等等;

int main(int argc , char *argv[])

{

  time_t sec = 9223372036854775807;  //即sec = 0x7fffffffffffffff;

  printf(“time = %lld\n” , sec);

  printf(“time = %llx\n” , sec);

  printf(“time = %0*llx\n” , 2 * sizeof , sec);

}

输出:

 time =9223372036854775807

 time = 7fffffffffffffff

time = 7fffffffffffffff