你真的学会了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.总结


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

相关文章
|
C语言
C语言入门——printf(““)左对齐与右对齐问题
C语言入门——printf(““)左对齐与右对齐问题
1738 0
C语言入门——printf(““)左对齐与右对齐问题
|
IDE 编译器 开发工具
Dev C++下载地址和安装教程(图解版)
Dev C++ 是一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(GCC 编译器的 Windows 移植版),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
54775 0
Dev C++下载地址和安装教程(图解版)
|
12月前
|
前端开发 JavaScript 开发者
React 分割线组件 Divider
在现代前端开发中,React 是最流行的 JavaScript 库之一,用于构建可维护的用户界面。本文介绍如何在 React 中使用分割线组件,从基础到高级逐步讲解。基础概念涵盖分割线的作用及其在 React 中的实现方式,包括使用 HTML 标签、第三方库(如 Material-UI 和 Ant Design)及自定义组件。常见问题及解决方案部分讨论了样式不一致、间距不当和响应式设计等问题,并提供了解决方案。高级用法则介绍了自定义分割线组件和动态生成分割线的方法。希望本文能帮助你在实际项目中更好地使用分割线组件。
431 71
|
10月前
|
负载均衡 数据可视化 API
零门槛,即刻拥有DeepSeek-R1满血版
零门槛,即刻拥有DeepSeek-R1满血版
|
11月前
|
边缘计算 缓存 Kubernetes
OpenYurt v1.6正式发布 | 提供节点级别的流量复用能力
本次发布的v1.6版本主要特性包括:节点级别的流量复用能力、增强的边缘自治能力等。
|
Java Spring
静态工具类注入mapper对象
项目中需要在一个utils工具类中,调用mapper对象进行查询并进行排序后选出数值最小的数值,然而静态方法里面直接注入会报空指针的错误。现在总结一下解决办法。
981 0
|
Kubernetes NoSQL MongoDB
k8s安装YAPI
k8s安装YAPI
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
236 4
|
存储 编译器 程序员
探索C/C++ main函数传参:成为编程高手的关键步骤
探索C/C++ main函数传参:成为编程高手的关键步骤
631 1