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

news2024/11/25 18:42:07

目录

前言

一:转义字符

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)

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

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

相关文章

SOA-面向服务架构

SOA-面向服务架构 1.概述2.SOA的设计原则包括:3. SOA实现方法1.Web Service2. 服务注册表3. 企业服务总线 细讲 超赞笔记 1.概述 SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种…

书生·浦语大模型-第一节课笔记

视频总结 23年发布的模型在一些材料中归位指令微调模型,后面逐渐升级应该已经是train的模型了 技术报告总结 InternLM2 Technical Report 评测与特点 6 dimensions and 30 benchmarks, long-context modeling, and open-ended subjective evaluations长文本…

【软件工程】概要设计

1. 导言 1.1 目的 该文档的目的是描述学生成绩管理系统的概要设计,其主要内容包括: 系统功能简介 系统结构简介 系统接口设计 数据设计 模块设计 界面设计 本文的预期读者是: 项目开发人员 项目管理人员 项目评测人员(…

C++:数据类型—字符串(11)

字符串就是包含多个字符组成的一个串 比如字符a,b,单个字符就是字符 那么"hello world" 就是一串字符组成的一个字符串 注意字符要在双引号里引用上,而字符一般都是单引号引用 在c中有两种定义字符串的方法,一个是原始c语言的定义方…

swift中的autoreleasepool(自动释放池)有用么?

想到一个问题 swift中的autoreleasepool(自动释放池)有用么? 我们进行验证一下 首先我们写一个加载图片的方法,保证会真正用到真实的IMP内存func loadBigData(string: String?) {if let path Bundle.main.path(forResource: "big", ofType: "png") {for…

二十四种设计模式与六大设计原则(二):【门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式】的定义、举例说明、核心思想、适用场景和优缺点

接上次博客:二十四种设计模式与六大设计原则(一):【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点-CSDN博客 目录 门面模式【Facade Pattern】 定义 举…

vitess执行计划缓存 测试

打开执行计划器缓存: sysbench /usr/local/share/sysbench/oltp_write_only.lua --mysql-host127.0.0.1 --mysql-port15306 --mysql-userroot --mysql-password --mysql-dbcustomer --report-interval10 100s sysbench /usr/local/share/sysbench/oltp_read_only.l…

9.动态规划——1.从递归到动态规划

例题——N阶楼梯上楼问题 分析 大事化小:爬N层有F(N)种可能,有 F ( N ) F ( N − 1 ) F ( N − 2 ) F(N)F(N-1)F(N-2) F(N)F(N−1)F(N−2)小事化了: F ( 1 ) 1 , F ( 2 ) 2 F(1)1,F(2)2 F(1)1,F(2)2 …

小白从0学习ctf(web安全)

文章目录 前言一、baby lfi(bugku-CTF)1、简介2、解题思路1、解题前置知识点2、漏洞利用 二、baby lfi 2(bugku-CTF)1.解题思路1、漏洞利用 三、lfi(bugku CTF)1、解题思路1、漏洞利用 总结 前言 此文章是…

【Redis】Redis 生产问题。如何确保缓存和数据库数据的一致性? 常见的缓存更新策略?

目录 缓存穿透 缓存穿透解决办法 缓存击穿 击穿解决办法? 缓存穿透和缓存击穿的区别? 缓存雪崩 雪崩解决办法? 如何确保缓存和数据库数据的一致性? 常见的缓存更新策略? 缓存穿透 定义:缓存穿透说…

npm mongoose包下载冲突解决之道

我在新电脑下载完项目代码后,运行 npm install --registryhttps://registry.npm.taobao.org 1运行就报错: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: lowcode-form-backend1.0.0 npm …

rabbitMQ的基础操作与可视化界面

当你安装好RabbitMq时,可以 尝试一下,这些命令 启动rabbitMQ服务 #启动服务 systemctl start rabbitmq-server #查看服务状态 systemctl status rabbitmq-server #停止服务 systemctl stop rabbitmq-server #开机启动服务 systemctl enable rabbitmq-…

代码随想录——移动零(Leetcode283)

题目链接 使用快慢指针思想 class Solution {public void moveZeroes(int[] nums) {int slow 0;for(int fast 0; fast < nums.length; fast){if(nums[fast] ! 0){nums[slow] nums[fast];}}while(slow < nums.length){nums[slow] 0;}} }

Linux-3 yum和vim

目录 本节目标&#xff1a; Linux 软件包管理器 yum 什么是软件包 1.yum是什么&#xff1f;软件包&#xff1f; 2.Linux(centos)的生态 3.yum的相关操作 我怎么知道我应该安装什么软件&#xff1f; 4.yum的本地配置 关于 rzsz 查看软件包 Linux编辑器-vim使用 1.v…

Git合并利器:Vimdiff使用指南

使用 vimdiff 作为 Git 的合并工具确实可能会让新手感到困惑&#xff0c;但它是一个功能强大的工具&#xff0c;一旦掌握了它&#xff0c;就可以非常高效地进行代码合并和比较。以下是一个简短的教程&#xff0c;旨在帮助理解 vimdiff 的基本用法以及如何利用它来进行 Git 合并…

Adaboost集成学习 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 股票价格预测是一个具有挑战性的时间序列预测问题,可以使用深度学习模型如双向长短期记忆…

嵌入式硬件中常见的面试问题与实现

1 01 请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌) ▶电阻 美国:AVX、VISHAY威世 日本:KOA兴亚、Kyocera京瓷、muRata村田、Panasonic松下、ROHM罗姆、susumu、TDK 台湾:LIZ丽智、PHYCOM飞元、RALEC旺诠、ROYALOHM厚生、SUPEROHM美隆、TA-I大毅、TMT…

HarmonyOS 应用开发之FA模型与Stage模型应用组件

应用配置文件概述&#xff08;FA模型&#xff09; 每个应用项目必须在项目的代码目录下加入配置文件&#xff0c;这些配置文件会向编译工具、操作系统和应用市场提供描述应用的基本信息。 应用配置文件需申明以下内容&#xff1a; 应用的软件Bundle名称&#xff0c;应用的开发…

OpenHarmony实战:烧录Hi3516DV300开发板

前言 烧录开发板是每个开发者的必修课&#xff0c;每次对系统的修改务必进行烧录测试&#xff0c;确保修改正确和不会引入新问题。 本文基于 Windows10&#xff0c;以 Hi3516DV300 开发板为例&#xff0c;指导如何烧录 OpenHarmony 镜像&#xff0c;镜像也叫固件。 这块开发…

MySQL InnoDB 之 多版本并发控制(MVCC)

多版本并发控制&#xff08;MVCC&#xff0c;Multi-Version Concurrency Control&#xff09;是数据库管理系统中用于提供高并发性和在事务处理中实现隔离级别的一种技术。MVCC 允许系统在不完全锁定数据库资源的情况下&#xff0c;处理多个并发事务&#xff0c;从而提高了数据…