3.1 printf函数
printf函数被设计用来显示个失传(format string)的内从,并且在字符串指定位置插入可能的值.
printf ( 格式串,表达式1,表达式2,...);
|
格式串包含普通字符和转换说明(conversion specification),其中转换说明以字符%开头.
c语言编译器不会检测格式串中转换说明的数量是否和输出项的数量相匹配.
转换说明
一般情况下,转换说明可以有
%m.pX格式或者
%-m.pX格式.
最小字段宽度(minimum field width) m指定了要显示的最小字符数量.如果要打印的数字比m个字符少,那么值在字段内是右对齐的.(在数值前面放置额外的空格).-m 是左对齐.
精度(precision) 依赖于转换说明符(conversion specifier)X的选择.X表示在显示数值前需要对其进行转换.
- d --表示十进制形式的整数.p说明可以显示的数字的最少个数(如果需要就在数前加上额外的0)
- e --表示指数(科学计数法)形式的浮点数.p说明小数点后应该出现的数字的个数(默认为6).如果p为0则不显示小数
- f --表示小数形式的浮点数.p的含义同上.
3.2 scanf函数
scanf函数有些不易察觉的陷阱.使用scanf函数时,程序员必须检查转换说明的数量是否与输入变量的数量相匹配,并且检查每个转换是否适合相对应的变量.和printf函数一样,编译器无法检查出可能的匹配不当.
另一个陷阱设计符号&,通常把&放在scanf函数调用中的每个变量的前面.
3.3 不要混淆printf函数和scanf函数
虽然scanf函数调用和printf函数调用看起来相似,但两个函数之间有显著的差异.
一个常见的错误是在printf函数调用时在变量前放置&.如:
printf ("%d, %d", &i,&j); /***wrong***/
另一个常见错误是假设scanf格式串应该类似于printf格式串:
scanf("%d, %d", &i,&j);
因为在寻找数据项时scanf函数通常会跳过空白符,所以出了转换说明,格式串常常不需要包含字符.scanf函数将首先寻找输入中的整数把这个整数存入变量i中,然后,scanf函数将试图把都好与下一个字符项匹配.如果下一个输入的字符不是逗号,那么scanf函数将不在读取变量j的值而终止操作.所以scanf一般这样的格式串:
scanf("d%d%",&i,&j);
另外,printf格式串经常以\n结尾,但scanf格式串中最好不要这样做.
阅读(494) | 评论(0) | 转发(0) |