C之易错注意点转义字符,sizeof,scanf,printf

目录

前言

一:转义字符

1.转义字符顾名思义就是转换原来意思的字符

2.常见的转义字符

1.特殊\b

2. 特殊\ddd和\xdd

 3.转义字符常错点----计算字符串长度

注意 :

如果出现\890,\921这些的不是属于\ddd类型的,,不是一个字符,ddd表示1~3个八进制数字

二:sizeof操作符 

1.含义:

2.使用时注意的几点

三:printf函数

1.注意点

2.常见占位符

3.限定宽度,输出部分字符串,函数返回值 

1.限定宽度

2.输出部分字符串

3.printf函数的返回值

四:scanf函数 

1.注意

2.scanf函数返回值

应用

五:小tips


接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧 

前言

C语言的一些常见的知识容易混淆,不知道具体使用细节,导致做题被坑,接下来我们就将介绍这些容易出错的知识

一:转义字符

1.转义字符顾名思义就是转换原来意思的字符

2.常见的转义字符

1.特殊\b

对于退格键\b需要注意的是如果\b之后还有字符的话 ,\b之后的第一个字符会覆盖\b处前一个字符,如:

 

2. 特殊\ddd和\xdd

\ddd 如:\130表示把130这个八进制数字转换为10进制后的值88,作为ASCII码值的字符,转换过来的十进制ASCII码值范围在0~127以内

\xdd 如:\x30表示把30这个十六进制数字转换为10进制后的值48,作为ASCII码值的字符,转换过来的十进制ASCII码值范围在0~127以内

 3.转义字符常错点----计算字符串长度

对于这种题就得熟知常见的转义字符。结果为

注意 :
如果出现\890,\921这些的不是属于\ddd类型的,,不是一个字符,ddd表示1~3个八进制数字

二:sizeof操作符 

1.含义:

1.sizeof 是⼀个关键字,也是操作符, 专⻔是⽤来计算sizeof的操作符数的类型⻓度的 ,单位是字
节。

2.使用时注意的几点

1.sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
2.sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
3.sizeof 的计算结果是 size_t 类型的。
sizeof(long)>=sizeof(int)

可以看出sizeof内部的运算是不进行的 ,只关注数据类型

4。 sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给
系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是
unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long
对应的 printf() 占位符分别是 %u %lu %llu 。这样不利于程序的可移植性。
C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返
回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是
unsigned long long 。
5.当sizeof操作符的返回值与int类型的值比较是,会发生类型转换,int转换为unsigned int,如果转换前int 定义变量的值负数,就会转换为非常大的正数

三:printf函数

1.注意点

1.printf()函数运行结束后,不会在末尾添加换行,在原来位置继续打印数据,如需换行需手动添加换行符

2.常见占位符

3.限定宽度,输出部分字符串,函数返回值 

1.限定宽度

从这个例子看出,

%5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。大于等于5位的话正常输出
输出的值默认是右对⻬,即输出内容前⾯会有空格;如果希望改成左对⻬,在输出内容后⾯添加空
格,可以在占位符的 % 的后⾯插⼊⼀个 - 号即%-5d。

 对于浮点数的限定宽度

对于浮点数默认小数点后打印六位,宽度为9的话,1.200000总共是8位(小数点也算一位),再前补一空格,如限定位数的话,也依然遵循此规则

2.输出部分字符串

占位符 %.5s 表⽰只输出字符串“hello world”的前5个字符,即“hello”。 

3.printf函数的返回值

从官方文档查询可知,printf函数的返回值是正确读取字符的个数,读取出现错误的话,将调ferror函数

 

我们对这个程序进行分析得

 

四:scanf函数 

1.注意

scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。
scanf() 处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存
进⾏解读。
scanf函数不能处理在输入字符串中有空格的,有空格的应该用gets函数来读取
scanf() 读取⽤⼾输⼊时, %d 占位符会忽略起⾸的空格
%c 不忽略空⽩字符,总是返
回当前第⼀个字符,⽆论该字符是否为空格
如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表
⽰跳过零个或多个空⽩字符
占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩
字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。

2.scanf函数返回值

 

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或
者遇到读取到⽂件结尾,则返回常量 EOF。
应用

用于在OJ中连续输入数据,完成多组输入,如:

可以用上面两种中的随便一种

如要停止继续输入可以输三次ctrl+z使读取到文件末尾 

五:小tips

我们经常会遇到这样的问题,在输入测试用例的时候,需要1,2,3这样输入,而有时就会1 2 3这样输入导致错误,这里提供一个小技巧可以忽略数据间的规定字符---->赋值忽略符

  只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。  
如:int a=0,b=0,c=0;
scanf(“%d%*c%d%*c%d”,&a,&b,&c)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载电子电器架构 —— 局部网络管理汇总

车载电子电器架构 —— 局部网络管理汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

在 Linux(红帽系列) 中使用 yum 工具安装 Nginx 及 Nginx 的常用命令与 Nginx 服务的启动和停止

官方文档:https://nginx.org/en/linux_packages.html 在红帽系列的 Linux 发行版中,使用 yum 工具帮助我们管理和下载安装 rpm 软件包,并帮助我们自动解决 rpm 软件包之间的依赖关系。 关于 yum 可以参考:https://www.yuque.com/u…

ROS2 学习(一)ROS2 简介与基本使用

参考引用 动手学 ROS2 1. ROS2 介绍与安装 1.1 ROS2 的历史 ROS(Robot Operating System,机器人操作系统),但 ROS 本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac&…

无需mac系统申请ios证书的傻瓜式教程

在hbuilderx云打包,无论是开发测试还是打生产包,都需要p12格式的私钥证书、证书密码和证书profile文件。这三样东西都是必须的,点击hbuilderx的官网链接,它创建证书的第一步,就需要使用mac系统的钥匙串访问去生成一个c…

设置asp.net core WebApi函数请求参数可空的两种方式

以下面定义的asp.net core WebApi函数为例,客户端发送申请时,默认三个参数均为必填项,不填会报错,如下图所示: [HttpGet] public string GetSpecifyValue(string param1,string param2,string param3) {return $"…

【Qt】窗口

目录 一、概述二、菜单栏(QMenuBar)三、工具栏(QToolBar)四、状态栏(QStatusBar)五、浮动窗口六、对话框 一、概述 Qt窗口是通过QMainWindow类来实现的。 QMainWindow是一个为用户提供主窗口程序的类&…

用1/10的成本为节点运营者启用零认证下载

在Sui网络上运行的验证节点和完整节点需要具有最高水平的可靠性和运行时间,以便提供高吞吐量及区块链的可扩展性。可靠地运行有状态应用的关键部分,确保可以相对轻松地进行硬件故障转移。如果磁盘故障或其他类型的故障影响到运行验证节点的机器&#xff…

最新2024年增强现实(AR)营销指南(完整版)

AR营销是新的最好的东西,就像元宇宙和VR营销一样。利用AR技术开展营销活动可以带来广泛的利润优势。更不用说,客户也喜欢AR营销! 如果企业使用AR,71%的买家会更多地购物。40%的购物者准备在他们可以在AR定制的产品上花更多的钱。…

记录实现水平垂直居中的5种方法

记录块级元素实现水平垂直居中的方法&#xff0c;效果如图。 <div class"parent"><div class"child">居中元素</div> </div><style> .parent {position: relative;width: 600px;height: 300px;background-color: #679389; …

每日一练 找无重复字符的最长子串

我们来看下这个题目&#xff0c;我们要统计的是不重复的子串&#xff0c;我们可以使用“滑动窗口法”&#xff0c;其实我们很容易就能想到思路。 我们的左窗代表我们目前遍历的开始&#xff0c;即我们遍历的子串的开头&#xff0c;右窗从左窗开始进行遍历&#xff0c;每次遍历…

【Redis持久化】RDB、ROB介绍和使用

RDB、ROB介绍和使用 引言ROB介绍配置指令介绍使用指令&#xff1a;dump文件修复指令快照禁用 AOF工作流程&#xff1a;文件重写&#xff1a;三种写回策略&#xff1a; 混合使用 引言 持久化的目的&#xff0c;其实就是在Redis重启或者中途崩溃的时候能够依靠自身恢复数据&…

Electron 读取本地配置 增加缩放功能(ctrl+scroll)

最近&#xff0c;一个之前做的electron桌面应用&#xff0c;需要增加两个功能&#xff1b;第一是读取本地的配置文件&#xff0c;然后记载配置文件中的ip地址&#xff1b;第二就是增加缩放功能&#xff1b; 第一&#xff0c;配置本地文件 首先需要在vue工程根目录中&#xff0…

蓝桥杯 本质上升序列

题目描述: 小蓝特别喜欢单调递增的事物。 在一个字符串中&#xff0c;如果取出若干个字符&#xff0c;将这些字符按照在字符串中的顺序排列后是单调递增的&#xff0c;则成为这个字符串中的一个单调递增子序列。 例如&#xff0c;在字符串 lanqiao 中&#xff0c;如果取出字符…

二维码门楼牌管理应用平台建设:构建智慧社区新生态

文章目录 前言一、二维码门楼牌管理应用平台概述二、公益报名功能的实现方式三、二维码门楼牌管理应用平台在智慧社区建设中的作用四、结论与展望 前言 随着科技的快速发展&#xff0c;智慧城市建设已成为现代城市管理的重要方向。二维码门楼牌管理应用平台作为智慧社区建设的…

算法系列--动态规划--特殊的状态表示--分析重复子问题

&#x1f495;"轻舟已过万重山!"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–算法系列–动态规划–特殊的状态表示–分析重复子问题 大家好,今天为大家带来的是算法系列--动态规划--特殊的状态表示--分析重复子问题 一.组合总数IV 链接…

Mybatis的动态SQL~

MyBatis有一个强大特性就是它的动态SQL。在实际项目开发中&#xff0c;经常需要根据不同条件拼接SQL语句&#xff0c;拼接时还要确保不能忘了必要的空格&#xff0c;有时候还要注意省掉列名列表最后的逗号...等等。在使用JDBC 或其他类似持久层框架操作数据库时&#xff0c;处理…

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1&#xff09;内容分发网络CDN 2&#xff09;专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化&#xff08;五大负载&#xff09; 1、cpu 使用率…

记一次对Codis的无知引起的逻辑变更

先提前说明&#xff0c;对Codis的无知是因为Codis不支持一些Redis的命令&#xff0c;而这次的逻辑变更&#xff0c;就是因为使用了PUBLISH&#xff0c;而Codis又不支持PUBLISH导致的。 1. 前言 前段时间的一次需求中&#xff0c;因为设计到多个服务的注册问题&#xff0c;在项…

算法整理:排序

快速排序 首先不妨以第一个数为基准数&#xff0c;在一轮遍历后&#xff0c;使基准数左边的数都小于基准数&#xff0c;基准数右边的数都大于基准数。 当然也可以取中间的数为基准数。 void quick_sort(int q[],int l,int r){if(l>r)return;int i l;int j r;int xq[(lr)/…

类的函数成员(二):析构函数

一.定义 析构函数(destructor) 与构造函数相反&#xff0c;当对象结束其生命周期&#xff0c;如对象所在的函数已调用完毕时&#xff0c;系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作。 例如&#xff0c;在建立对象时用new开辟了一片内存空间&#xff0c;dele…