printf与scanf的用法知识(C Primer Plus总结)

printfscanf

1printf()函数返回打印字符的个数,如果有输出错误,则返回一个负值。

2、在scanf中对于%c,在格式字符串中添加一个空格字符会有所不同。例如,如果把%c放在格式字符串中的空格前面,scanf()便会跳过空格,从第1个非空白字符开始读取。也就是说,scanf("%c",  &ch)从输入中的第1个字符开始读取,而scanf(" %c", &ch)则从第1个非空白字符开始读取。scanf()函数返回成功读取的项数。如果没有读取任何项,且需要读取一个数字而用户却输入一个非数值字符串,scanf()便返回0。当scanf()检测到“文件结尾”时,会返回EOFEOFstdio.h中定义的特殊值,通常用#define指令把EOF定义为-1)。

3*的修饰符

(1)、printf()scanf()都可以使用*修饰符来修改转换说明的含义。但是,它

们的用法不太一样。首先,我们来看printf()*修饰符。

如果你不想预先指定字段宽度,希望通过程序来指定,那么可以用*

饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。

也就是说,如果转换说明是%*d,那么参数列表中应包含* d对应的值。这

个技巧也可用于浮点值指定精度和字段宽度。程序清单4.16演示了相关用

法。

#include <stdio.h>

int main() {

  unsigned width, precision;

  int number = 256;

  double weight = 242.5;

  printf("Enter a field width:\n");

  scanf("%d", &width);

  printf("The number is :%*d:\n",width, number);

  printf("Now enter a width and aprecision:\n");

  scanf("%d %d", &width,&precision);

  printf("Weight = %*.*f\n", width,precision, weight);

  printf("Done!\n");

  return 0;

}

变量width提供字段宽度,number是待打印的数字。因为转换说明中*

d的前面,所以在printf()的参数列表中,widthnumber的前面。同样,width

precision提供打印weight的格式化信息。下面是一个运行示例:

Enter a field width:

6

The number is : 256:

Now enter a width and aprecision:

8 3

Weight = 242.500

Done!

这里,用户首先输入6,因此6是程序使用的字段宽度。类似地,接下来

用户输入83,说明字段宽度是8,小数点后面显示3位数字。一般而言,程

序应根据weight的值来决定这些变量的值。

(2)、scanf()*的用法与此不同。把*放在%和转换字符之间时,会使得

scanf()跳过相应的输出项。程序清单4.17就是一个例子。

#include <stdio.h>

int main() {

  int n;

  printf("Please enter threeintegers:\n");

  scanf("%*d %*d %d", &n);

  printf("The last integer was %d\n",n);

  return 0;

}

程序清单4.17中的scanf()指示:跳过两个整数,把第3个整数拷贝给n

下面是一个运行示例:

Please enter threeintegers:

2013 2014 2015

The last integer was2015

在程序需要读取文件中特定列的内容时,这项跳过功能很有用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值