1.从scanf()的角度看输入
假设scanf()根据一个%d转换说明读取一个整数,scanf()每次读取一个字符,跳过所有的空白字符,直至遇到第一个非空白字符才开始读取。scanf()不断的读取和保存字符,直到读到一个非数字字符。如果遇到一个非数字字符或读取下一个字符,她便认为读到了整数的末尾。然后,scanf()把非数字字符放回输入
2.格式字符串中的普通字符
scanf()函数允许把普通字符放在格式字符串中。除空格字符外的普通字符必须输入字符串严格匹配。,例如在两个转换说明之间添加一个逗号
scanf("%d,%d",&n,&m);scanf()函数将其解释成用户输入一个数字、一个逗号,然后再输入一个数字。如88,121
4.printf()和scanf()的*修饰符
如果不想预先指定字段宽度,希望通过程序来指定,那么可以用*修饰符代替字段宽度。
/*varwrd.c--使用变宽输出字段*/
#include<stdio.h>
int main (void)
{
unsigned width, precision;
int number = 256;
double weight = 242.5;
printf("enter a fieled width:\n");
scanf("%d", &width);
printf("the number is :%*d:n", width, number);
printf("now enter a width and a precision:\n");
scanf("%d %d", &width, &precision);
printf("weight=%*。*f\n", width, precision, weight);
printf("done!\n");
return 0;
}
变量width提供字段宽度,number是待待打印的数字。因为转换说明中*在d的前面,所以在printf()的参数列表中,width 在number 的前面。同样,width和precision提供打印weight 的格式化信息。
在这里,用户首先应该输入6,因此6是程序使用的字段宽度。类似的,接下来用户输入8和3,说明字段宽度是8,小数点后面显示3位数字,一般而言,程序应根据weight的值来决定这些变量的值
scanf()*用法2,把*放在%和转换符之间时,会使得scanf()跳过相应的输出项如下
/*skiptwo.c--跳过输入中的前两个整数*/
#include<stdio.h>
int main(void)
{
int n;
printf("please enter three integers:\n");
scanf("%*d %*d %d", &n);
printf("the last integer was %d\n", n);
return 0;
}
输出如下
please enter three integers:
2013 2014 2015
the last integer was 2015
5.print()的用法提示
想把数据打印成列,指定字段的宽度是很有用的。如
print("%9d %9d %9d\n",va11,va12,va13);
6.C语言用char 类型表示单个字符,用字符串表示字符序列。字符常量是一种字符串形式,用双引号括起来,可以把字符串储存在字符数组中(有内存中相邻的字节组成)中。在程序中,最好用#define定义数值常量,用const 关键字申明变量为只读变量