博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
printf与scanf的用法知识(C Primer Plus总结)
阅读量:1870 次
发布时间:2019-04-26

本文共 1627 字,大约阅读时间需要 5 分钟。

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

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

转载地址:http://tweff.baihongyu.com/

你可能感兴趣的文章
掌握AI核心技术没有秘籍,能自己创造就是王道
查看>>
大学老师的月薪多少?实话实说:4万多一点……
查看>>
2020年电赛题目,命题专家权威解析!
查看>>
写论文,这个神器不能少!
查看>>
现在做硬件工程师还有前途吗?
查看>>
华为被超越!这家公司成中国最大智能手机制造商,不是小米!
查看>>
芯片为什么持续缺货?
查看>>
美国无人机在火星首飞成功,创造历史,3米飞行高度悬停30秒
查看>>
缺货涨价很久的MCU的国产和国外厂家汇总!(80家)
查看>>
华为重磅反击,鸿蒙来了!
查看>>
常用电子接口大全,遇到不认识的,就翻出来对照辨认!
查看>>
芯片IC附近为啥要放0.1uF的电容?
查看>>
电赛 | 19年全国一等奖,北航学子回忆录。
查看>>
电赛 | 19年全国一等奖,北航学子回忆录(上)
查看>>
电赛 | 19年全国一等奖,北航学子回忆录(下)
查看>>
突破!台积电1nm芯片,有了新进展。
查看>>
一文读懂全系列树莓派!
查看>>
自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶
查看>>
聊聊我是如何编程入门的
查看>>
J-Link该如何升级固件?
查看>>