当前位置: 首页 > news >正文

手机购物网站设计在线医疗网站建设

手机购物网站设计,在线医疗网站建设,无锡高端网站建设机构,广东网站建设哪家揭秘C语言输入输出内幕#xff1a;printf与scanf的深度剖析 C语言往期系列文章目录 往期回顾#xff1a; VS 2022 社区版C语言的安装教程#xff0c;不要再卡在下载0B/s啦C语言入门#xff1a;解锁基础概念#xff0c;动手实现首个C程序C语言概念之旅#xff1a;解锁关… 揭秘C语言输入输出内幕printf与scanf的深度剖析 C语言往期系列文章目录 往期回顾 VS 2022 社区版C语言的安装教程不要再卡在下载0B/s啦C语言入门解锁基础概念动手实现首个C程序C语言概念之旅解锁关键字字符字符串的秘密揭秘语句和注释程序员的宝藏C语言基础入门数据类型、变量声明与创建详解C操作符详解深入探索操作符与字符串处理 文章目录 揭秘C语言输入输出内幕printf与scanf的深度剖析C语言往期系列文章目录前言一、printf1.1 printf基本用法1.2 占位符1.3占位符列举1.4 输出格式1.4.1 限定宽度1.4.2 总是显示正负号1.4.3 限定小数位数1.4.4 输出部分字符串 二、 scanf2.2.1 基本用法2.2.2 scanf的输入原理2.2.3 scanf返回值2.2.4 占位符2.2.5 赋值忽略符 总结 前言 printf和scanf作为C语言标准库中最为基础的输入输出函数它们的正确使用和深入理解对于每一个C语言学习者来说都至关重要。本文旨在通过深入浅出的方式带领读者全面理解并掌握printf和scanf这两个函数的用法。 一、printf 1.1 printf基本用法 首先我们来回忆第一个函数printf函数。在之前的第一个C语言程序我们就见过这个库函数这个printf函数它是干什么的呢 printf() 的作用是将参数文本输出到屏幕。 简单理解就是你给printf传进去一些信息这些信息叫参数把参数输出到屏幕上它名字里的 f 叫 format格式化什么意思呢 我们说printf是两个单词其实严格意义上来说它是按照指定的格式打印数据格式化数据。 print format - 按照指定的格式打印数据到目前为止我们学的最简单的功能就是在屏幕上打印字符串比如说printf 一个hello world你得加一个头文件才能使用这个库函数。 #include stdio.hint main() {//print format - 按照指定的格式打印数据printf(hello world);return 0; }但是注意printf 不会自动在末尾换行。 如果我们想实现换行的功能就需要在末尾加一个转义字符\n。 我们可以做一个对比上边打印完就是打印完了下边则是会加上一个换行。 #include stdio.hint main() {//print format - 按照指定的格式打印数据printf(hello world\n);return 0; }比如说未来你要是想在哪添加换行你就在哪加 \n 就行了。 1.2 占位符 printf()可以在输出文本中指定占位符所谓“占位符”就是这个位置可以用其它值代入. printf(there are 3 apples\n); printf(there are %d apples\n, 3); printf(there are %d apples\n, 30); printf(there are %d apples\n, 10);占位符是会被后方的数字替换掉的。常用的占位符除了%d,我们还用%s%s表示代入的是一个字符串。 printf(%s will come tonight\n, 张三);前面是我们的输出格式 %s后面是我们的代入值 —— 张三。输出的文本还可以使用多个占位符。占位符和后面替换的值一定是有顺序的是一 一对应的。 例如 #include stdio.h int main() {printf(%s says it is %d oclock\n, lisi, 21);return 0; }此时%s 就会被 lisi 代入而 %d 就会被21所代入。 1.3占位符列举 printf() 的占位符有许多种类与C语言的数据类型相对应。下面按照字母顺序列出常用的占位符方便查找具体含义在后面博客介绍。 值得注意的是一般我们打印指针都是以十六进制的地址形式打印出来的。因为用二进制打印太长了。 1.4 输出格式 printf() 可以定制占位符的输出格式. 1.4.1 限定宽度 printf() 允许限定占位符的最小宽度。比如说%5d,也就是说最小的宽度是五如果宽度不够就会拿空格填充。 举个例子 printf(%d\n, 123); printf(%5d,123);这时候在123之前会多两个空格。如果超过五位呢那程序就会如实打印。 printf(%5d\n, 1234567);上面示例中 %5d 表示这个占位符的宽度至少为5位。如果不满5位对应的值的前面会添加空格。输出的值默认是右对齐即输出内容前面会有空格。 如果希望改成左对齐在输出内容后面添加空格可以在占位符的 % 的后面插入⼀个 - 号。 printf(%-5d,123);浮点数的限定宽度 对于浮点数这个限定符会限制所有数字的最小显示宽度。 例子 printf(%f\n, 123.45);printf(%12f\n, 123.45);%12f 表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位所以 123.45 输出结果的头部会添加2个空格。 1.4.2 总是显示正负号 默认情况下 printf() 不对正数显示号只对负号显示 - 号。如果想让正数也输出 号可以在占位符的 % 后面加⼀个 。 printf(%d\n, 12);printf(%d\n, -12);常规情况下‘’是都不打印的只要加一个号就可以一直打印符号了。 1.4.3 限定小数位数 当我们输出小数时有时希望限定小数的位数比如并不希望每次打印小数的时候都打印很多个0. 比如希望小数点后面只保留两位占位符可以写成 %.2f 。 printf(%.2f\n, 123.45); printf(%f\n, 123.45); printf(%.3f\n, 123.45);那如果本来小数点后六位而限定位数7位或者更多呢 这种写法我们就可以与限定宽度占位符结合使用。 printf(%6.2f\n, 0.5);6就代表我们至少输出六位小数保持两位。 当然还有另外一种写法最小宽度和小数位数这两个限定值都可以用 * 代替通过 printf() 的参数传入。 例如 #include stdio.h int main() {printf(%*.*f\n, 6, 2, 0.5);return 0; }% * . * f 的两个星号通过 printf() 的两个参数 6 和 2 传入。 1.4.4 输出部分字符串 %s 占位符用来输出字符串默认是全部输出。 如果我们只想输出开头的部分可以用 %.[m]s 指定输出的长度其中 [m] 代表一个数字表示所要输出的长度。 例如 #include stdio.h int main() {printf(%.5s\n, hello world);return 0; }占位符 %.5s 表示只输出字符串“hello world”的前5个字符即“hello” 二、 scanf 当我们有了变量我们需要给变量输入值就可以使用 scanf 函数如果需要将变量的值输出在屏幕上的时候可以使用 prinf 函数下面看⼀个例子 int score 0;//输入一个值printf(请输入成绩:);scanf(%d, score);//输出printf(成绩是:%d, score);这时候我们会发现报错了。 这时候我们只要在代码的最上方加入 #define _CRT_SECURE_NO_WARNINGS 1就能解决报错。 2.2.1 基本用法 刚刚我们也使用了scanf那C语言输入输出的逻辑是什么呢 这里我就绘制了一张图中间是我们的程序里面有一个变量score当我们在这个地方调用scanf的时候。第一步库函数printf打印“请输入成绩”第二步你的键盘敲了一个100这个100就传到这个变量里面去第三步printf把信息打印到屏幕上。 我们来追究一下用法 scanf() 函数用于读取用户的键盘输入。程序运行到这个语句时会停下来等待用户从键盘输入。用户输入数据、按下回车键后 scanf() 就会处理用户的输入将其存入变量。它的原型定义在头文件 stdio.h 。 我们来演示一下这个程序注意当我们程序执行到这一步的时候回车还没敲下说明还没存到变量里面。键盘上输入回车之后才存进去。 scanf它的第一个参数是一个格式字符串里面会放置占位符与 printf() 的占位符基本一致告诉编译器如何解读用户的输入需要提取的数据是什么类型。这是因为C语言的数据都是有类型的 scanf() 必须提前知道用户输入的数据类型才能处理数据。它的其余参数就是存放用户输入的变量格式字符串里面有多少个占位符就有多少个变量。 int a 0; int b 0; float f1 0.0; float f2 0.0; scanf(%d%d%f%f, a, b, f1, f2); printf(%d %d %f %f\n, a, b, f1, f2);注意scanf的格式可以不加空格但是输入得加空格那能不能加回车呢 通过代码验证可以发现两个数据之间可以加入空格也可以加入回车输入的效果是一样。 当然输入的时候不要随便加换行。这样在大批量的输入数据的时候容易混乱但可不可以呢是可以的。 上面示例中格式字符串 %d%d%f%f 表示用户输入的前两个是整数后两个是浮点数比如 1-20 3.4 -4.0e3 。这四个值依次放入 i 、 j 、 x 、 y 四个变量。scanf() 处理数值占位符时 会自动过滤空白字符包括空格、制表符、换行符等。 所以用户输入的数据之间有一个或多个空格不影响 scanf() 解读数据。另外用户使用回车键将输入分成几行也不影响解读。 2.2.2 scanf的输入原理 scanf() 处理用户输入的原理是用户的输入先放入缓存等到按下回车键后按照占位符对缓存进行解读。解读用户输入时会从上一次解读遗留的第一个字符开始直到读完缓存或者遇到第一个不符合条件的字符为止。 #include stdio.h int main() {int x;float y;// 用户输入 -13.45e12# 0scanf(%d, x);scanf(%f, y);printf(%d\n, x);printf(%f\n, y);return 0; }程序运行第一个scanf开始读取这时候scanf读到小数点就截止了。.45e12这是科学计数法的表现形式那为什么是4499999……这跟浮点数的存储有关我们现在只需要知道浮点数的存储在内存中是无法精确存储的。所以读到#号的时候就停止了。 这里额外说明C语言中科学计数法是如何表示的 1.5e3--1.5*10^3 1500这是个指数形式的表示方法我们用字母e或者E来表示以10为底的指数例如1.5e3就是等于1.5*10^3. 但要注意在e或者E前必须要有数字以及后面必须要为整数不能写成12e3.2。 2.2.3 scanf返回值 scanf() 的返回值是一个整数表示成功读取的变量个数。如果没有读取任何项或者匹配失败则返回 0 。如果在成功读取任何数据之前发生了读取错误或者遇到读取到文件结尾则返回常量EOF。 int main() {int a 0;int b 0;float f 0.0;int r scanf(%d %d %f, a, b, f);printf(a %d\n, a);printf(b %d\n, b);printf(f %f\n, f);printf(r %d\n, r);return 0; }当我们成功读取了3个变量这时候r就等于3. 一般来说我们对程序按一次ctrl z就停止在vs上我们需要连续的按三次这是VS的bug可以看到我们停止了然后r的返回值是2. EOF是什么呢 EOF 它本质是缩写end of file 文件的结束标志。 转到定义它是负1.只要让scanf都不读取直接错误这样scanf就会返回负1. 2.2.4 占位符 特别说明除了 %c 以外都会自动忽略起首的空白字符。 %c 不忽略空白字符总是返回当前第一个字符无论该字符是否为空格。 int main() {char ch 0;scanf(%c, ch);printf(%c, ch);printf(xxxx\n);return 0; }如图所示 如果要强制跳过字符前的空白字符可以写成 scanf( %c, ch) 即 %c 前加上⼀个空格表示零个或多个空白字符。 scanf( %c, ch);如图所示 下面要特别说⼀下占位符 %s 它其实不能简单地等同于字符串。它的规则是从当前第一个非空白字符开始读起直到遇到空白字符即空格、换行符、制表符等为止。 因为 %s 不会包含空白字符所以无法用来读取多个单词除非多个 %s ⼀起使用。这也意味着scanf() 不适合读取可能包含空格的字符串比如书名或歌曲名。另外 scanf() 遇到 %s 占位符会在字符串变量末尾存储⼀个空字符 \0 。也就是在刚才的例子中读取完abc之后存到数组里面了这时候末尾会加一个\0。 scanf() 将字符串读入字符数组时不会检测字符串是否超过了数组长度。所以储存字符串时很可能会超过数组的边界导致预想不到的结果。如图所示数组的长度才五这里一口气存了九个字符进去。 所以为了防止这种情况使用 %s 占位符时应该指定读入字符串的最长长度即写成 %[m]s 其中的 [m] 是一个整数表示读取字符串的最大长度后面的字符将被丢弃。 int main() {char arr[5] { 0 };scanf(%4s, arr);printf(%s\n, arr);return 0; }为什么只写4个呢因为字符串末尾还要放一个\0。 2.2.5 赋值忽略符 日常生活中假设我们需要记录日期我们就会用年月日三个变量来记录这时候我们就会输入 1990/5/12这样的形式来记录我们的日期。 但是有时用户的输入可能不符合预定的格式。我们想让用户按 “年 - 月 - 日”这样的形式输入就必须在年月日当中加上-要不然就读取错误。 为了避免这种情况 scanf() 提供了⼀个赋值忽略符assignment suppression character* 。 只要把 * 加在任何占位符的百分号后面该占位符就不会返回值解析后将被丢弃。 #include stdio.h int main() {int year 0;int month 0;int day 0;scanf(%d%*c%d%*c%d, year, month, day);printf(%d %d %d\n, year, month, day);return 0; }这样无论用户的输入格式中间是什么我们总能准确的读取对应的数据然后将年月日正常输出到屏幕上。 总结 我们深入了解了printf和scanf这两个C语言标准库函数的基本用法和高级特性。printf函数能够按照指定的格式输出各种类型的数据而scanf函数则能够读取用户输入的数据并进行类型转换。这两个函数共同构成了C语言编程中输入输出功能的核心。下期我们将从分支结构开始讲起。
文章转载自:
http://www.morning.jtszm.cn.gov.cn.jtszm.cn
http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn
http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn
http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn
http://www.morning.zkbxx.cn.gov.cn.zkbxx.cn
http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn
http://www.morning.gxfzrb.com.gov.cn.gxfzrb.com
http://www.morning.rltw.cn.gov.cn.rltw.cn
http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn
http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn
http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn
http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn
http://www.morning.srnth.cn.gov.cn.srnth.cn
http://www.morning.rjmd.cn.gov.cn.rjmd.cn
http://www.morning.bqpgq.cn.gov.cn.bqpgq.cn
http://www.morning.cfcdr.cn.gov.cn.cfcdr.cn
http://www.morning.scrnt.cn.gov.cn.scrnt.cn
http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn
http://www.morning.gqflj.cn.gov.cn.gqflj.cn
http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn
http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn
http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.jlrym.cn.gov.cn.jlrym.cn
http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn
http://www.morning.khdw.cn.gov.cn.khdw.cn
http://www.morning.qtfss.cn.gov.cn.qtfss.cn
http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn
http://www.morning.prhfc.cn.gov.cn.prhfc.cn
http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn
http://www.morning.fqljq.cn.gov.cn.fqljq.cn
http://www.morning.klyyd.cn.gov.cn.klyyd.cn
http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn
http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn
http://www.morning.bpmft.cn.gov.cn.bpmft.cn
http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn
http://www.morning.c7493.cn.gov.cn.c7493.cn
http://www.morning.dnls.cn.gov.cn.dnls.cn
http://www.morning.bprsd.cn.gov.cn.bprsd.cn
http://www.morning.gqbks.cn.gov.cn.gqbks.cn
http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn
http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn
http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn
http://www.morning.zlces.com.gov.cn.zlces.com
http://www.morning.qphcq.cn.gov.cn.qphcq.cn
http://www.morning.nlhcb.cn.gov.cn.nlhcb.cn
http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn
http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn
http://www.morning.jtrqn.cn.gov.cn.jtrqn.cn
http://www.morning.jqrp.cn.gov.cn.jqrp.cn
http://www.morning.wflsk.cn.gov.cn.wflsk.cn
http://www.morning.pcrzf.cn.gov.cn.pcrzf.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.sftrt.cn.gov.cn.sftrt.cn
http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn
http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn
http://www.morning.sthp.cn.gov.cn.sthp.cn
http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn
http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn
http://www.morning.bchhr.cn.gov.cn.bchhr.cn
http://www.morning.ygxf.cn.gov.cn.ygxf.cn
http://www.morning.dxxnq.cn.gov.cn.dxxnq.cn
http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn
http://www.morning.khyqt.cn.gov.cn.khyqt.cn
http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn
http://www.morning.jokesm.com.gov.cn.jokesm.com
http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn
http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.rbzd.cn.gov.cn.rbzd.cn
http://www.morning.rcwbc.cn.gov.cn.rcwbc.cn
http://www.morning.zpzys.cn.gov.cn.zpzys.cn
http://www.morning.sgrwd.cn.gov.cn.sgrwd.cn
http://www.morning.zrgx.cn.gov.cn.zrgx.cn
http://www.morning.mnyzz.cn.gov.cn.mnyzz.cn
http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn
http://www.morning.wbxtx.cn.gov.cn.wbxtx.cn
http://www.morning.ynrzf.cn.gov.cn.ynrzf.cn
http://www.morning.lgtcg.cn.gov.cn.lgtcg.cn
http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn
http://www.tj-hxxt.cn/news/248297.html

相关文章:

  • 仙游有人做网站2024中核招聘网最新招聘公告
  • 中国建设银行官网站下载弹幕网站是什么技术做的
  • 网站关站新乡seo外包
  • 泰安高新区建设局网站淘宝服务商
  • 上海哪里做网站比较好军事网站模板
  • 网上做效果图网站有哪些软件电商网站建设优缺点
  • idc网站源码电子商务网站硬件需求
  • 盐城有没有做网站吗厦门市思明区建设局网站
  • 厦门电商网站开发莱芜住房和城乡建设部网站
  • ps怎么做网站的首页中山网站优化
  • 合肥网站网站建设电子商务网站开发教程
  • 免费域名做网站网页美工设计的要点
  • 购物网站建设需求模板crm系统主要干什么的
  • 网站策划书最后一步怎么做WordPress怎么自定义页眉
  • 吉林省城乡建设部网站建设银行住房租赁品牌
  • 网站建设seo需求文档游戏网站哪个好
  • 顺德网站制作公司哪家好wordpress怎么烤别人的
  • 本机可以做网站的服务器吗net公司网站开发框架源代码
  • 三 网站开发使用软件环境甜品网站模板代码
  • 邢台度网网站建设成都高端定制网站
  • 学徒制下的课程网站建设海口建网站公司
  • 如何用微信做网站wordpress如何关闭自动更新
  • 网站开发建设合同模板宝格丽网站建设策划案
  • 网站域名收费标准上海企业建站
  • 南宁网站设计方法学建筑设计出来能干嘛
  • 谷歌网站为何打不开工程中标查询网站
  • 自己做网站要办手续吗公司注册app流程下载
  • 一键建站系统源码惠州网站建设科技有限公司
  • 网站的构成要素运营小程序的成本有哪些
  • 网站开发课设报告书gps建站教程