c语言格式控制符

http://zhidao.baidu.com/link?url=-YJjz3U0fd_eSW9eLa8ankGo_QbyOOOaKYWyAY9g4mKWQj0DN6l12OSLJz24U8jCwo18MiBCzwpkFLoDM02yv_

printf的格式控制的完整格式:
%     -     0     m.n     l或h     格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

---------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。
①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②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:输出共占n列,其中有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格式符输出时,前16位是有效数字,小数6位.

对于m.n的格式还可以用如下方法表示(例)
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式

我自己敲过格式符的代码,给你看看吧:

c语言格式控制符

时间: 2024-08-04 13:31:40

c语言格式控制符的相关文章

关于printf中格式控制符

背景 今天,高中同学问了我关于C语言中输出指针存储的地址的问题,借这个机会复习了一下格式控制符,还了解到一些神奇的东西 格式控制符 完整格式 1.% - x m . n 格式字符 2.有-表示左对齐,无表示右对齐 3.x表示空位需要填的字符 4.m表示最小域宽 5.n表示精度,一般用于实型小数点保留位数,按照四舍五入原则 格式字符 整型 %d格式,表示整型 %hd格式,表示短整型 %ld格式,表示长整型 %lld/l64d格式,表示64位整型 %u格式,表示无符号整型,其他长度同d格式 %o格式

c语言输出控制符

c语言格式输出 %d 10进制 %f 浮点型输出 %lf 长浮点型输出 %c 字符输出 %s 字符串输出 %o 八进制输出 %x 十六进制输出 %p 16进制,一般输出地址 %e 科学计数法输出 %m 输出错误,errno的输出控制 printf("%m"); 输出出错原因

文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

 1.在window下的命令重定向输出到文件中 2.将内容输入到某个文件中的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件中的名,然后将命令读取最后输出到文件中.命令<1.txt>2.txt   这一句的作用就是将执行的命令输入到2.txt中. 4.文件重定向案例1 #include <iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str;

Swift学习——格式控制符和元组流程控制(二)

Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  例如学生表中的姓名,年龄,电话等 定义如下 var studentinfo = ("jhon",29,"123456") println(studentinfo.0) 访问的时候是通过下标来访问的. //元组本身是以一个整体存在的,如果用下标获取元祖的某一项的数据时 //可以通过点语法加下标的形式得到,这叫元祖的拆包 println("name:\(studentinfo.0)

格式控制符

一直以来对各项繁杂的格式控制符掌握的不是很好, 总是知道的大概, 用的时候都是感觉差不多是这个样子....今天终于吃到苦头 = = ............ CString strTerminalID; strTerminalID.Format(TEXT("%10u"),m_nTerminalID); exp.str(""); exp << "insert into T_B_CAR_REGISTER_INFO(id,TERMINAL_ID,PH

c语言-格式控制字符 %XXd 用法

d格式字符 用来输出十进制整数,有以下几种用法: 1. %d, 按整型数据的实际长度输出. 2.  %md,m为指定输出的整型位数的宽度,如果整型数据的实际位数小于m,则左端补以空格,如果大于m,则按实际位数输出. 3. %0md,同上,当整型数据实际位数小于m时,左端补以数字0,而不是空格. 4. %.md, 同 %0md. 5. %ld,   按长整型数据输出. 举例: int main() { int i(7); printf("%d\n",i); printf("%3

C程序设计(2)-格式控制符、标准输入输出函数

标识符(Identifier):以字母或下划线打头,由字母.数字和下划线构成,区分大小写. 格式控制符: 用在输入输出函数scanf( )和printf( )中的格式控制部分,即第一个逗号前的双引号内,用来对输出的数据(标识符或表达式)进行格式说明,包括数据类型.长度.对齐方式.小数位数等. 1.格式控制符的形式 %  [-]  [0]  [m/m.n]  [l/h] 格式控制符 其中[ ]里面的内容是可选的: -:表示左对齐,缺省情况下为右对齐(若没规定输出数据的宽度则为左对齐): 0:当规定

C语言格式输入函数scanf使用

函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序 函数原型为 int scanf(const char * restrict format,...); 函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置 scanf函数返回成功读入的数据项数,读入数据时遇到了"文件结束"则返回EOF 控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白,空白符可以是

scanf格式控制符

格式控制 1. %d %o %x %c %s %f %e 无%u格式.%g格式 2. scanf("%3d%3d", &a, &b); 输入:123456 //a=123,b=456 3. scanf("%2d%*3d%2d", &a, &b); 输入:1234567 //a=12,跳过345,b=67. 4. scanf("%7.2f",&a); //不合法的,不能输入:12345.67使a的值为1234