printf()的用法提示和scanf()关键概念

145 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

printf()的用法提示

想把数据打印成列,指定固定字段宽度很有用。因为默认的字段宽度是待打印数字的宽度,如果同一列中打印的数字位数不同,则下面语句:

printf("%d %d %d\n",val1,val2,val3);

按照这个语句打印出来的可能会参差不齐。假设执行3次printf()语句,用户输入不同的变量,其输出可能会这样:

23 247 5699
5 4 42
21366 3456 38760

使用足够大的固定字段宽度可以让输出整齐美观。如果执行下面这样的语句:

printf("%9d %9d %9d\n",val1,val2,val3);

上面的输入变成这样:

       23    247     5699
        5      4       42
    21366   3456    38760

在两个转换变量说明中间插入一个空白字符,可以确保即使一个数字溢出了自己的字段,下一个数字也不会紧跟着该数字一起输出(连起来这两个数字看起来像一个数)。这是因为格式字符串中的普通字符(包括空格)会打印出来。

另一方面,如果要在文字中嵌入一个数字,通常指定一个小于或等于该数字宽度的字段会比较方便。这样,输出数字的宽度正适合,没有不必要的空白。例如下面这个语句:

printf("Count Beppo ran %.2f miles in 3 hours.\n",distance);

其输入如下:

Count Beppo ran 56.43 miles in 3 hours.

如果把转换字符换成%10.2f,则输出如下:

Count Beppo ran 56.43 miles in 3 hours.

scanf()关键概念

C语言的标准输入函数(scanf())和输出函数(printf())都使用一种系统。在该系统中,第1个参数中的转换说明必须与后续参数的值相匹配。例如,int转换说明%d与一个浮点值匹配会产生奇怪的结果。需要注意一下,确保转换说明的数量和类型与函数的其余参数相匹配。对于scanf(),一定要记得在变量面前加取地址(&)。

空白字符在scanf()处理输入时起关键的作用。除了%c模式,scanf()在读取时会跳过空白字符,然后一直读取字符,直到遇到空白字符或正在读取字符不匹配的字符。