C 程序设计教程(10)—— 数据输入函数(scanf)用法详解

news2024/11/30 20:37:56

C 程序设计教程(10)—— 数据输入函数(scanf)用法详解

该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。

目录

  • C 程序设计教程(10)—— 数据输入函数(scanf)用法详解
    • 一、scanf 函数的格式
    • 二、格式字符
    • 三、scanf 函数的使用要点

scanf 函数称为格式输入函数,用 scanf 函数可以从键盘输入任何类型的数据。

一、scanf 函数的格式

scanf 函数是一个标准的格式输入函数,该函数原型包含在标准输入输出头文件 stdio.h 中。scanf 函数的格式如下:

scanf("格式控制字符串",地址列表);

说明:

(1)格式控制字符串的含义与 printf 函数相同。

(2)地址列表是由若干个地址组成的序列,可以是变量的地址或字符串的首地址等。

普通变量的地址由 & 运算符来实现,格式为:

&变量名

例如:

#include<stdio.h>
int main() {       
	int a,b,c;
	float f1,f2,m;
	scanf("%d%d",&a,&b);  //输入a和b的值时用空格隔开 
	c=a+b;
	scanf("%f,%f",&f1,&f2);//输入f1和f2的值时用逗号(,)隔开 
	m=f1+f2;
	printf("c=%d\n",c);
	printf("m=%f\n",m);
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

二、格式字符

scanf 函数的格式控制字符串也是以 % 开始,以一个格式字符结束,中间可以插入附加的格式说明符。scanf 函数用到的格式字符如下表所示:

格式字符说明
d用来输入十进制整数
o用来输入八进制整数
x用来输入十六进制整数
c用来输入单个字符
s用来输入字符串,将字符串送到一个字符数组中,在输入时以非空字符开始,以第一个空白字符结束。字符串以串结束标志 \0 作为其最后一个字符。
f用来输入实数,可以用小数形式或指数形式输入
e与 f 作用相同,e 与 f 可以替换

scanf 函数附加的格式说明字符如下表所示:

字符说明
l用于输入长整型数据(可以用 %ld、%lo、%lx),以及 double 型数据(用 %lf 或 %le)
h用于输入短整型数据(可以用 %hd、%h0、%hx)
m指定输入数据所占宽度(列数),遇空格或不可转换字符则输入结束
*表示本输入项在读入后不赋给相应的变量

说明:

(1)可以指定输入数据所占列数,系统自动按指定的列数截取所需数据。

例如:

#include<stdio.h>
int main() {       
	int a,b;
	char ch1,ch2;
	scanf("%3d%3d",&a,&b);
	scanf("%3c%3c",&ch1,&ch2);
	printf("a=%d,b=%d\n",a,b);
	printf("ch1=%c,ch2=%c\n",ch1,ch2);
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

(2)% 后的 * 附加说明符,用来表示跳过它相对应的数据。例如:

#include<stdio.h>
int main() {
	int a,b;
	scanf("%d %*d %d",&a,&b);
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

三、scanf 函数的使用要点

1、scanf 函数中格式控制字符串后面不是变量名,是变量地址,即:&变量名。但在使用 s 格式输入字符数组时,变量名本身就是字符串的首地址,不需要加地址运算符 &。例如:

#include<stdio.h>
int main() {
	int a;
	char str[6];
	scanf("%d",&a);
	scanf("%s",str); 
	printf("a:%d\n",a);
	printf("str:%s",str);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

2、scanf 函数没有计算功能,因此输入的数据只能是常量,不能是表达式。

3、输入数据时,数据与数据之间应使用分隔符。分隔符有两种,一种是在输入格式控制字符串中给定的。另一种是空格、Enter 键或制表符(Tab)。

例如:

#include<stdio.h>
int main() {
	int a,b,c,d,e,f,g,h;
	scanf("%d,%d",&a,&b); //输入时用逗号(,)分隔 
	scanf("%d%d",&c,&d);  //输入时用空格分隔
	scanf("%d%d",&e,&f);  //输入时用回车分隔
	scanf("%d%d",&g,&h);  //输入时用tab键分隔
	printf("a=%d,b=%d\n",a,b);
	printf("a=%d,b=%d\n",c,d);
	printf("a=%d,b=%d\n",e,f);
	printf("a=%d,b=%d\n",g,h);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

4、输入格式中,除了格式说明之外的普通字符需要原样输入。例如:

#include<stdio.h>
int main() {
	int x,y;
	scanf("x=%d,y=%d",&x,&y);
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

5、输入实型数据时,不允许指定精度。

6、输入数据时,如果遇到以下情况,则认为该数据输入结束。

(1)遇到空格、换行符或制表符(Tab)

(2)达到指定的宽度输入结束。例如:

#include<stdio.h>
int main() {
	int x;
	scanf("%2d",&x);
	printf("x=%d\n",x);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

(3)遇到非法字符输入结束。例如:

#include<stdio.h>
int main() {
	int x;
	char ch;
	float f1;
	scanf("%d%c%f",&x,&ch,&f1);
	printf("x=%d,ch=%c,f1=%f\n",x,ch,f1);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu安装PyTango步骤

继续上一篇&#xff1a; https://blog.csdn.net/woshigaowei5146/article/details/128443892?spm1001.2014.3001.5502 环境 虚拟机&#xff1a;VMware Ubuntun&#xff1a;20.04LTS Tango&#xff1a;9.3.5 安装 PyTango作为官方debian/ubuntu包在linux上可用: for Python…

195:vue+openlayers 加载json格式热力图,调节半径大小和模糊程度

第195个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中加载JSON格式的数据,呈现热力图。这里可以调节热力图的半径大小和模糊程度。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例代码(共100行)headDa…

【JavaGuide面试总结】Java高级特性基础篇·上

【JavaGuide面试总结】Java高级特性基础篇上1.为什么 Java 中只有值传递&#xff1f;2.static 关键字使用场景3.Exception 和 Error 有什么区别&#xff1f;4.Checked Exception 和 Unchecked Exception 有什么区别&#xff1f;5.Throwable 类常用方法有哪些&#xff1f;6.fina…

【Linux】缓冲区理解

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;缓冲区&am…

深入理解ECAPA-TDNN——兼谈Res2Net、ASP统计池化、SENet、Batch Normalization

概述 ECAPA-TDNN是说话人识别中基于TDNN的神经网络&#xff0c;是目前最好的单体模型之一关于TDNN&#xff0c;可以参考深入理解TDNN&#xff08;Time Delay Neural Network&#xff09;——兼谈x-vector网络结构 ECAPA-TDNN TDNN本质上是1维卷积&#xff0c;而且常常是1维膨…

【Django项目开发】角色管理模块的开发(八)

文章目录一、序列化器设计1、嵌套的序列化器设计2、普通的序列化类支持&#xff1a;新增、修改角色名、删除、查询3、用于给某一个角色批量授权的序列化4、用于给某一个角色单一授权&#xff0c;包括取消单一授权二、视图类设计1、包含的接口有哪些2、set_permission_to_role方…

听说……国产的领航辅助驾驶系统都很卷?

什么是城市NOA功能&#xff1f; 基于国产芯片的城市NOA功能有看点吗&#xff1f; 国产芯片发展到了什么阶段&#xff1f; 车上配的激光雷达是不是越多越好&#xff1f; 车企常吹的“数据驱动”、“中央计算” 究竟是真是假&#xff1f; ……最近&#xff0c;两家中国公司组CP 推…

基于ros将文件夹中的图像转换为bag包(c++版本)

一、前期工作创建工作空间 二、创建工作包 创建完成后&#xff0c;文件夹的格式为&#xff1a; 三、准备编译文件和代码 3.1 更换编译文件中的内容 将上图中的&#xff0c;CMakeLists.txt文件中的内容&#xff0c;替换为下面的内容 cmake_minimum_required(VERSION 3.0.2) p…

【漏洞复现】Yapi接口管理平台RCE漏洞汇总

文章目录前言YApi接口管理平台远程代码执行漏洞一、漏洞描述二、影响版本三、FOFA语句四、漏洞复现五、修复建议YApi NoSQL注入导致远程命令执行漏洞一、YApi介绍二、漏洞描述三、漏洞分析四、漏洞详情五、影响版本六、漏洞复现七、修复建议前言 本篇文章主要归纳总结YApi各版…

南邮数据结构

md文档网址&#xff1a;https://gitee.com/infiniteStars/wang-dao-408-notes/blob/master/408/数据结构.md 1 绪论 1.1算法的基本概念 程序与算法的区别和联系 联系&#xff1a;程序是计算机指令的有序集合&#xff0c;是算法用某种程序设计语言的表述&#xff0c;是算法在…

2023年如何搭建最小可行性的产品文档/产品手册?

在推出并击败竞争对手进入市场的竞赛中&#xff0c;很容易将“不必要的”任务&#xff08;如文档&#xff09;放在次要位置。但根据 Write the Docs 纪录片社区的说法&#xff0c;文档应该既是先导性的&#xff0c;也是参与性的。这意味着您应该在开始开发之前开始记录&#xf…

吊打高斯模糊的stackBlur加入OpenCV

stackBlur介绍 stackBlur 最近才加入到OpenCV中&#xff0c;将在下一个Relase版本&#xff08;4.7&#xff09;中出现。C用户可以尝试从源码编译OpenCV体验一下。Python 用户可以尝试用pip安装rolling版本的OpenCV&#xff1a; pip install opencv-python-rolling4.6.0.202210…

新手教程 | 常见的爬虫类型有哪些?

程序猿圈流传着一个神话级别的事&#xff1a;全公司仅靠1个人&#xff0c;每年就能转上1400多万美元。听起来天方夜谭一样&#xff0c;那他是如何做到的呢&#xff1f;看报道就会发现&#xff0c;他利用的是爬虫技术。 随着互联网的发展&#xff0c;从海量的互联网数据中&…

不可错过,Java程序员必备珍藏书单

不要因为迷茫&#xff0c;而停止了脚下的路。给大家推荐一份Java程序员必看的书单&#xff0c;豆瓣评分都挺不错的&#xff0c;往下看&#xff01; 一、Java 基础篇书单 《Java编程思想》&#xff1a;从Java的基础语法到最高级特性&#xff08;深入的面向对象概念、多线程、自…

煤矿智能化相关50项团体标准征求意见

智能化煤矿总体架构 原文地址&#xff1a;https://chinacs.scimall.org.cn/a3651.html 由煤矿智能化创新联盟等单位提出&#xff0c;中国煤炭学会归口&#xff0c;中煤科工集团常州研究院有限公司等单位起草的《煤矿通信接口与协议通用技术要求》50项团体标准已完成征求意见稿的…

用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知

背景 背景是这样的, 我的家里台式机常年 休眠, 并配置了 Wake On Lan (WOL) 方便远程唤醒并使用. 但是我发现, 偶尔台式机会被其他情况唤醒, 这时候我并不知道, 结果白白运行了好几天, 浪费了很多电. 所以我的需求是这样的: &#x1f914; 电脑唤醒后(可能是开机, 有可能是…

3款电脑必装软件,功能强大且免费,打死也舍不得卸载

闲话不多说&#xff0c;直接上狠货。 1、FlowUs息流 FlowUs息流是一款知识管理与协作平台&#xff0c;以云端笔记为载体&#xff0c;配合在线文档、知识库、文件夹等多形态功能&#xff0c;支持免费使用&#xff0c;极大提高个人与团队工作效率。支持多端同步使用&#xff0c;无…

STL空间配置器框架分析

目录 一、空间配置器概念 二、空间配置器的作用 三、内存池技术 四、空间配置器的实现原理 3.1 流程概述 3.2 一级空间配置器 3.3 二级空间配置器 3.3.1 二级空间配置器设计 3.3.2 内存碎片问题 一、空间配置器概念 即为各个容器高效的管理空间(空间的申请与回收)的。…

聊一聊双亲委派模式

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 说起双亲委派模型&#xff0c;不得不说一下类加载器。 类加载器是什么&#xff1f; 当我们编译Java类时&#xff0c;JVM会创建与平台和…

Allegro174版本新功能介绍之移动画布不闪屏设置

Allegro174版本新功能介绍之移动画布不闪屏设置 Allegro在升级到174版本后,在移动画布的时候,视图数据量比较大的情况,会出现闪屏现象 Allegro在切换到Open GL模式下,这个现象会有所缓解,具体操作如下 选择Setup选择User-preferences