你真的学会了printf和scanf函数吗?

简介: 你真的学会了printf和scanf函数吗?

1.printf函数的介绍


  1. printf()是标准库的头文件stdio.h定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。
  2. 占位符 printf()可以在输出文本中指定占位符,所谓占位符就是这个位置可以用其他值带入。例如下列的%d就是一个占位符,被数值18带入。
int main()
{
  printf("You are a %d boy!", 18);
  return 0;
}
  1. *一个printf()中可以包含多个占位符 例如:
#include<stdio.h>

int main()
{
  printf("%s are a %d boy!", "Wang Laowu", 18);
  return 0;
}


printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个,如果参数个数少于对应的占位符,printf()可能会输出内存中的任意值。


  1. 这里是printf()函数中的各种占位符解释和用法

点此进入网站C++reference,这里可以查找一切关于C语言的知识。不过这是一个英文网站,要有一定的英语基础阅读起来更加方便。话说回来,我们还是要多阅读此类英文网站,好处当然是不言而喻的。(当然,如果阅读英文网站实在吃力的话,也可以直接搜索printf,也是有很多的中文网站可以阅读的)

https://legacy.cplusplus.com/reference/cstdio/printf/?kw=printf


5.输出格式:printf()可以定制占位符的输出格式

1.限定宽度:printf()允许限定占位符的最小宽度

——%5d表示这个占位符的宽度至少为5为,如果不满5为,对应的值前面会添加空格。
——输出的值默认是右对齐,即输出的内容前面会有空格,想要左对齐的话,在5前面加负号就行了
——对于打印小数来说也是同理

——这里对于float类型的变量默认小数点后面跟着6为小数,如果我们想要控制小数点后面的位数可以如下这样操作但是我们要注意当小数点后面的位数大于我们限制的位数是,它是会四舍五入的。

——如果我们想要在数字前面显示正负号,可以如下这样操作。

——当然我们还有更为灵活的方式控制限定的数值:用*代替数值通过后面参数的输入来控制限制的数值,例如:

——当我们想要控制输出字符串的长度是可以采用%.[m]s的这种格式([m]前面的.不要漏了哟~);例如:


2.scanf函数的介绍


  1. scanf()函数的语法形式与printf基本相同,不过在输入参数时要在参数前面加入一个取地址符号&(printf读取的是数值,而scanf读取的是地址)。
  2. 当scanf处理数值占位符时,会自动过滤掉空白字符(包括空格,制表符,换行等),另外,用户使用回车键将数值分成几行也不影响解读。举个栗子


然而占位符%c却不会过滤掉起首的空白字符~

可以看到a并没有打印出来,因为空格也是字符,%C将空格读取后就停止读取了(那么我们要怎么解决这个问题呢,其实很简单,只要在%C前面加一个空格就行了,这里就不演示了)


特别的

占位符%S会过滤掉前面的起首空白字符,而当再次遇到空白字符是其将停止读取。举个栗子啦~

可以看到我们只打印了字符串Zhangsan。那我们想要把他们都打印出来,有没有办法呢?其实是有办法的,我们只要输入多个%S就行啦~(爱学习的你们要学会自己去演示哦)


  1. scanf的返回值:scanf的返回值是scanf成功读取的变量个数,如果没有读取到任何项或匹配失败,则返回0。如果在成功读取到任何数据之前发生了读取错误或遇到读取到文件末尾,则返回常量EOF(-1)。举个栗子~


那了解scanf的返回值有什么用呢~

当我们要测试多组数据的输入时我们就可以用到~


  1. 最后,介绍一下赋值忽略符:当我们输入时想要丢弃一些不要的字符我们可以用如下格式%*C(即赋值忽略符,类似的%*d,%*f等等)举个栗子~

这里我们可以看到字符‘/’被忽略掉了


3.总结


这次的编程知识分享就接近尾声了,不过,我还有几句话想和与我同样刚开始学习编程的你们分享:编程之路,道阻且长,行则至。无论是学习还是生活,本是沉闷,但奔跑起来便有风。

相关文章
|
9月前
scanf和getchar区别
scanf和getchar区别
131 0
|
5月前
c中scanf函数注意点
c中scanf函数注意点
30 0
|
5月前
|
缓存
scanf和printf函数
scanf和printf函数
60 0
|
11月前
有关printf(p+1),printf(p++),printf(++p)的相关理解
有关printf(p+1),printf(p++),printf(++p)的相关理解
46 0
|
6月前
|
C语言
printf与scanf函数的返回值
printf与scanf函数的返回值
|
10月前
|
存储 Serverless C语言
printf()和scanf() (详解)
printf()和scanf() (详解)
|
11月前
|
人工智能
scanf函数与getchar函数区别
scanf函数与getchar函数区别
113 0
|
11月前
|
C语言
论Scanf、Gets、Getchar的区别
论Scanf、Gets、Getchar的区别
110 0
|
IDE 编译器 开发工具
VS 调用 scanf 的正确姿势
VS 调用 scanf 的正确姿势
274 0
VS 调用 scanf 的正确姿势