scanf函数使用方法详解

article/2025/9/28 1:11:51

scanf函数使用方法详解

  • 一.scanf函数是什么?
  • 二.scanf函数的作用
  • 三.注意事项
    • 1.输入数据
    • 2.%c
  • 四.字段宽度
  • 五.scanf函数的返回值

一.scanf函数是什么?

1.首先我们需要知道,scanf函数是一种格式化输入函数(按照格式字符串的格式,从键盘上把数据输入到指定的变量之中)

C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。

平时我们使用的最多的就是% + 类型。

二.scanf函数的作用

scanf函数是一种格式化输入函数,它的作用便是通过我们的键盘将输入字符转换成我们需要的类型

在这里需要注意,从键盘上输入的都是字符列如我们输入的是数字123,其实是字符‘1’, ‘2’, ‘3’。 为什么呢?

操作系统内核就是这样运作的。操作系统在接收键盘数据时都将它当成字符来接收的。这时就需要用“输入控制符”将它转化一下。%d的含义就是要将从键盘输入的这些合法的字符转化成一个十进制数字。经过 %d 转化完之后,字符 123 就是数字 123 了

	int i = 10;scanf("%d", &i);  //输入的是字符123,转化为数字123

三.注意事项

1.输入数据

1. 通常,在调用 scanf()函数时,格式化字符串只包含转换说明(类型的转换)
如果不是,那么格式化字符串中除转换说明与空白符以外的其他所有字符,必须与输入源对应位置的字符完全一致。否则 scanf()函数就会终止处理,并将不匹配的字符放回到缓冲区中下一个转换字符将会从该字符开始。

scanf函数

此时,若我们输入的是10,i依旧为零,因为在输入时我们并没有输入 i=10, 而是直接输入10,此时缓冲区里只有10,scanf从缓冲区里读数据时并没有i 于是便终止处理了,因此 i = 0没有被改变

但是此时字符1和字符0依旧在缓冲区中,于是gets函数就将它读走了,然后输出。

缓冲区
此时我们输入 i=10,此时打印i就是10,然后换行了,这是为什么?
因为在我们输入i=10后按了回车,相当于在向缓冲区内输入(\n),之后输入字符串时,被gets函数读走,然后输出了。

此时想要解决很简单,只需要将\n读走就可以了,在这里我们可以使用getchar();
函数输出

注意:此处此处只是举个栗子,在输入时我们一般都不会包含除转换说明之外的其他字符,否则很容易出现BUG。

2.%c

	char s = 0;scanf("%c", &s); //此时输入 空格c 将会输出什么printf("%c\n", s);

最后会输出,空格 然后换行,此时缓冲区内有,c和\n

那要是%d 或者 %f 呢?
float
int

此时我们发现除了 %c 之外的类型说明都会都会忽略前面的空白字符(whitespace character)(空格, 回车,tab符等)。

四.字段宽度

字段宽度是十进制整型正数,它指定了对于给定的转换说明,scanf()所读取字符的最大数量。对于字符串输入来说,字段宽度可以防止缓冲区出现溢出情况

字段宽度
此时,缓冲区内还有数字4 和 \n。

五.scanf函数的返回值

1. scanf()函数的返回值是成功存储数据项的数量

如果一切执行顺利,返回值就是转换说明的数量(但不计包含星号的转换说明)。如果发生读取错误或在转换数据项前就到达了输入源尾部,则 scanf()函数会返回值 EOF.


http://chatgpt.dhexx.cn/article/lelJ2WpL.shtml

相关文章

scanf与scanf_s函数的使用 详解

1.scanf_s(是vs提供的函数) a.代码1 int main() {char a 0;//scanf_s("%c", &a, 1);scanf_s("%c", &a, sizeof(a));return 0; } scanf_s有三个参数,最后一个是变量a所占据空间的大小(单位为字节)&…

【opencv4】opencv视频教程 C++(opencv教程)1、opencv介绍和环境搭建

下一讲:【opencv4】opencv视频教程 C(opencv教程)2、加载,修改,保存图像 [opencv_C] 入门强推!!!【B站最全】 文章目录 opencv介绍和环境搭建opencv组成架构核心模块环境搭建&#…

Opencv的使用教程,opencv比较全的基础教程

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:Opencv对图像视频的基本使用 场景二:Opencv对图像视频进一步处理 场景三:Opencv对图像视频高级处理 . . . 课程视频 课程视频2 ubuntu18下采用源码编译的方式安裝opencv / 简单方式安装 …

VC2015搭建OpenCV环境(超详细教程)

1、首先下载OpenCV源码库 ① https://sourceforge.net/projects/opencvlibrary/?sourcetyp_redirect ②双击运行.exe文件,导出源代码 2、windows环境变量设置(测试环境是win7 64位) ①找到系统高级设置path 右键计算机--》属性--》高级系…

OpenMV IDE安装使用教程

一、什么是OpenMV OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者…

OpenMV使用技巧

目录 一、光照影响1. 光照过强2. 光照过弱 二、杂框影响1. threshold参数2. 长宽比 三、画图 一、光照影响 OpenMV在使用过程中可能会遇到光照太强或者光照太弱等影响图像识别的情况,尤其在跑神经网络模型时,光照太强或太弱对识别结果的影响是致命的。 …

VC++6.0配置opencv1.0教程(全网最详细)附加图文

VC6.0配置opencv1.0教程&#xff08;全网最详细&#xff09;附加图文 &#xff08;&#xff08;很多评论我没时间看&#xff0c;tiquma写出来了&#xff0c;有兴趣的同学自己找一找8&#xff09; 配置前 第一次写博客&#xff0c;激动٩(๑>◡<๑)۶&#xff0c;坐标武…

C/C++ vs2017 OpenCV简单入门

离职之际&#xff0c;自学一下图像相关的知识点&#xff0c;只是简单学了一点皮毛&#xff01; 目录 一、 OpenCV环境搭建 二、使用opencv 常用接口说明 使用案例 1. 图像色彩空间转换 2. Mat对象的创建与赋值 3. 图像像素的读写操作 4. 图像像素的算术操作 5. 滚动条…

VS2017搭建OpenCV环境(新手详细教程)

整体流程如下&#xff1a; 下载Visual Studio2017版本下载OpenCV3.4.1版本配置环境变量在Visual Studio2017中引入头文件、库文件、链接库环境测试 说明&#xff1a;没有必要根据博主的博客下载与博客相应的版本&#xff0c;不同版本之间只需要改一点点东西即可 1、下载安装V…

《OpenCV联合C++》第一课:OpenCV下载及环境配置

1.下载OpenCV软件 官网下载Releases - OpenCV 下载对应文件即可 下载后导出到本地 导出中。。。 2.环境变量配置 导入对应文件夹下面路径..\opencv\build\x64\vc15\bin 3.文件夹内文件拷贝指定路径 打开文件夹下面路径.\opencv\build\x64\vc15\bin 将bin目录下面的opencv_wor…

OpenCV入门教程,超详细OpenCV入门教程!10小时让你轻松掌握opencv的使用

OpenCV是一个基于BSD许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Ruby、MATLAB等语言的接…

VS+OpenCV+VC超详细的配置教程

写在前面的话 版权声明&#xff1a;转载请注明出处&#xff01;博主是一个小菜鸟&#xff0c;并且非常玻璃心&#xff01;如果文中有什么问题&#xff0c;请友好地指出来&#xff0c;博主查证后会进行更正。每篇文章都是博主现阶段的理解&#xff0c;如果理解的更深入的话&…

OpenMV入门介绍

目录 一、OpenMV是什么二、OpenART mini与OpenMV对比三、图像处理背景知识1.像素和分辨率2. 帧率3.RGB三原色4.LAB颜色空间 四、OpenMV图像处理方法1.感光元件自动增益/白平衡/曝光窗口ROI 2.画图画线画框画圆画十字写字示例 3. 寻找色块&#xff08;颜色识别&#xff09;find_…

最新opencv-c++安装及配置教程(VS2019 C++ opencv4.4.0)

以前写过opencv python的安装教程&#xff0c;后来有一些同学开始私信我如何安装及配置opencv c。 本文是以最新的版本入手&#xff0c;一步步详解opencv c 的安装及配置过程。&#xff1a; 第一步&#xff0c;下载解压opencv 算法库 进入到以下链接&#xff1a;https://opencv…

超详细:VS配置OpenCV教程,需要收藏

目录 安装环境说明 下载OpenCV 配置OpenCV开发环境 属性表 测试 可能存在的问题 安装环境说明 操作系统&#xff1a;Windows10 OpenCV版本&#xff1a;OpenCV2和OpenCV3 VS版本&#xff1a;VS2015或者VS2017 下载OpenCV OpenCV下载地址&#xff1a;Home - OpenCV或者直…

【OpenCV教程合集版】一文入门和精通OpenCV(C/C++)

文章目录&#xff08;OpenCV版本4.6.0&#xff09; 1.数据类型2.矩阵基本操作2.1 全零矩阵2.2 全一矩阵2.3 单位矩阵2.4 矩阵转置2.5 求逆矩阵2.6 逗号式分隔创建矩阵2.7 矩阵定义(只列出常用的)2.7.1 数据类型Scalar 2.8 通过ptr与at函数遍历矩阵2.8.1 Vec类型 2.9 通过迭代器…

openCV超详细入门教程(python版)

涉及内容&#xff1a; 背景提取颜色过滤边缘检测用于对象识别的特征匹配一般对象识别 你将需要两个主要的库&#xff0c;第三个可选&#xff1a;python-OpenCV&#xff0c;Numpy 和 Matplotlib。 一、加载图片 首先&#xff0c;我们正在导入一些东西&#xff0c;我已经安装了…

OpenCV的简单使用教程与基本函数(C++版本)

OpenCV的简单使用教程&#xff08;C&#xff09; OpenCV简介OpenCV的使用基础打开、显示和保存图像图像存储变量 Mat类图像元素的存储读入图像文件创建Mat类复制Mat类图像元素的访问OpenCV画图命令行交互界面 OpenCV简介 OpenCV是一个开源发行的跨平台计算机视觉和机器学习软件…

OpenMV入门

1. 什么是OpenMV OpenMV 是一个开源&#xff0c;低成本&#xff0c;功能强大的 机器视觉模块。 OpenMV上的机器视觉算法包括 寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪 等。 以STM32F427CPU为核心&#xff0c;集成了OV7725摄像头芯片&#xff0c;在小巧的硬件…

OpenMV零基础教程

一、资料导航 “工欲善其事&#xff0c;必先利其器”。在正式学习OpenMV之前&#xff0c;你必须知道一条或几条OpenMV的学习途径。这里推荐星瞳科技的中文官网教程&#xff0c;这个教程里面包括了OpenMV IDE的下载和安装、OpenMV上手教程、OpenMV中文文档、OpenMV详细参数以及O…