初识C语言—字符串、转义字符、注释
字符串
字符串就是一串字符
用英文双引号括起来的字符
int main()
{"dasgfhjkasg\n""hello world!"return 0;
}
字符串的结束标志是\0这个转义字符
如何证明呢?
int main()
{//字符数组 - 数组是一组相同类型的元素char arr[] = "hello";//方括号内不写数组长度时,会根据后面元素来初始化return 0;
}
运行时查看调试监视arr中可以看到
数组的第六位存放'\0'
所以\0是字符串结束的标志,字符串结尾都隐藏了一个\0
结束标志如何理解
#include<stdio.h>
int main()
{char arr1[]="abc";char arr2[] = {'a','b','c'};printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}
运行监视
//arr1 中有四个元素 - 多一个 \0 //arr2 中有三个元素
运行结果
abc abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴-␦→
我们来看空间内容
| 数组名称 | 内存块 |
|---|---|
| arr1 | abc\0 |
| arr2 | abc |
arr2打印完成后后面空间是未知的,没有停止符号,所以会继续打印乱码
测试放入\0
int main()
{char arr1[]="abc";char arr2[] = {'a','b','c','\0'};printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}
结果
abc abc
再次验证一下
求字符串长度
strlen(); //求字符串的长度 string length
int len = strlen("abc");
printf("%d",len);
输出结果
3
出现警告strlen未定义 - 出现原因,没有引用头文件
需要引用
#include <string.h>
字符串的结束标志\0仅仅是结束标志!!!
当我们求长度时并不计算在内!!!
#include<stdio.h>
#include <string.h>
int main()
{char arr1[] = "abc";char arr2[] = { 'a','b','c' };printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}
运行结果
3 42//随机值,直到找到\0才会停下
意料之中,因为没有终止符,所以字符串长度为随机值
#include<stdio.h>
#include <string.h>
int main()
{char arr1[] = "abc";char arr2[] = { 'a','b','c','\0'};printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}
运行结果
3 3
完美!
转义字符
#include<stdio.h>
int main()
{printf("C:\test\test.c");return 0;
}
打印结果
C: est est.c
转义字符:转变了原来的意思
三字母词已经不支持 — 比如 ??) 会变成 ]
例如
int main()
{printf("%c",''');return 0;
}
报错是因为单引号,所以我们需要转义一下
int main()
{printf("%c",'\'');return 0;
}
输出结果
'
printf在打印数据的时候可以指定打印的格式
printf("%d",100);
printf("%c",'a');
printf("%s","abc");
如何不让斜杠被认为是转义字符
\t会被转义成水平制表符,我们可以用斜杠转义斜杠来解决上面的问题
#include<stdio.h>
int main()
{printf("C:\\test\\test.c");return 0;
}
打印结果
C:\test\test.c
成功!
\转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \ 代表一个反斜线字符’’’ 092 ’ 代表一个单引号(撇号)字符 039 " 代表一个双引号字符 034 ? 代表一个问号 063 \0 空字符(NUL) 000 \ddd 1到3位八进制数所代表的任意字符 三位八进制 \xhh 十六进制所代表的任意字符 十六进制
\ddd 1到3位八进制数所代表的任意字符 三位八进制
int main()
{printf("%c\n",'\130');return 0;
}
输出结果
X //——ASCII码值为88
八进制130转化为十进制为88
键盘上可以打出各种字符
各种字符是如何存储的
A — 65
B — 66
a — 97
ASCII码表:每一个字符都有一个值:ASCII值
\xhh 十六进制所代表的任意字符 十六进制
int main()
{printf("%c\n",'\X30');return 0;
}
输出结果
0 //’0‘的ASCI码值为48,十六进制为30
面试题
#include<stdio.h>
int main()
{//问题1:在屏幕上打一个单引号,怎么做//问题2:在屏幕上打一个字符串,字符串的内容是一个双引号”,怎么做printf("%c\n", '\‘');printf("%s\n", "\"");return 0;
}
这道题不难,根据上面的内容可以直接给出答案
笔试题:
//程序输出什么?
#include<stdio.h>
int main()
{ printf("%d\n",strlen("abcedf")); printf("%d\n",strlen("C:\test\328\test.c"));return 0;
}
答案为
14//转义字符算一个字符
魔鬼细节
/328
我们很容易想到上面的 — \ddd 1到3位八进制数所代表的任意字符 三位八进制
但是八进制数怎么能出现8呢朋友
注释
用来解释复杂代码
//这种注释风格是C++注释风格 /* 这种注释风格是C语言的注释风格 */ //这种最为常用,C语言注释不支持嵌套注释,所以C++风格更常用
相关文章:
初识C语言—字符串、转义字符、注释
字符串 字符串就是一串字符 用英文双引号括起来的字符 int main() {"dasgfhjkasg\n""hello world!"return 0; } 字符串的结束标志是\0这个转义字符 如何证明呢? int main() {//字符数组 - 数组是一组相同类型的元素char arr[] "hel…...
洛谷 P1731 [NOI1999] 生日蛋糕
题目 题目链接 自己没看题解写的,摸石头过河,解释一下 首先,输入输出都是正整数。先搞定输入,再判断条件,如果无解,输出0,否则输出蛋糕外表面面积Q(这里用全局变量,开l…...
操作教程|使用MeterSphere对恒生UFX系统进行压力测试
恒生UFX(United Finance Exchange,统一金融交换)系统(以下简称为“UFX系统”),是一款帮助证券公司统一管理外部接入客户的系统,该系统整体上覆盖了期货、证券、基金、银行、信托、海外业务等各类…...
算法中的数学知识
文章目录 算法中的数学知识约数约数个数约数之和 筛法求质数阶乘分解解法一解法二: 欧拉函数基本模板筛法求欧拉函数大数据幂的欧拉函数 快速幂费马小定理快速幂求逆元数论分块例题:[因数平方和](https://www.acwing.com/problem/content/4665/)分析:具体…...
2024高频前端面试题 Vue2 和 Vue3 篇
HTML和CSS篇:2024高频前端面试题 HTML 和 CSS 篇-CSDN博客 JavaScript 和 ES6 篇: 2024高频前端面试题 JavaScript 和 ES6 篇-CSDN博客 * Vue2 和 Vue3的区别: 1)双向数据绑定原理的区别 2)根节点的不同 Vue2只能一…...
vue,Promise备忘
网址 https://www.promisejs.org/ 记录 在Vue.js或者其他JavaScript项目中,Promise 是一种处理异步操作的标准机制,用于解决传统的回调地狱问题,提供了一种更优雅、链式调用的编程模型。Promise对象代表一个异步操作的结果,它可…...
软件测试工程师职位笔试知识点细节(2)
一、软件测试分为哪几个阶段,生命周期? 软件测试一般分为单元测试、集成测试和系统测试。 需求分析→测试计划→测试设计、软件开发→测试执行→测试评估 二、一条软件缺陷(或者叫Bug)记录都包含了哪些内容? 一条Bug…...
大数据冷热分离方案
数据冷热分离方案 1、背景 随着业务的发展,在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性(需要访问的都是近期产生的热数据;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留)。在业务表数据 量可控…...
Vue3中Vue Router的使用区别
在 Vue 3 中,useRouter 和 useRoute 是两个用于 Vue Router 的 Composition API 函数,它们的用途和返回的对象不同,接下来详细了解一下它们的区别以及如何正确使用它们。 useRouter useRouter 用于获取 router 实例,这个实例提供…...
Open CASCADE学习|读取STEP模型文件到XDE中
目录 1、XDE组件简介 2、读取STEP模型文件到XDE中的步骤 3、案例 1、XDE组件简介 Open CASCADE的XDE(扩展数据交换)组件是一个关键的工具,它允许用户通过转换附加到几何BREP(边界表示)数据的附加数据来扩展数据交换…...
flink:自定义数据分区
shuffle随机地将数据分配到下游的子任务。 rebalance用round robbin模式将数据分配到下游的子任务。 global把所有的数据都分配到一个分区。 partitionCustom: 自定义数据分区。 package cn.edu.tju.demo; import org.apache.flink.api.common.functions.; import org.apache…...
力扣图论篇
以下思路来自代码随想录以及官方题解。 文章目录 797.所有可能的路径200.岛屿数量130.被围绕的区域1020.飞地的数量 797.所有可能的路径 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不…...
图腾柱PFC工作原理:一张图
视屏链接: PFC工作原理...
MongoDB开启事务
MongoDB开启事务 配置单节点。到路径C:\Program Files\MongoDB\Server\4.0\bin 使用记事本以管理员权限打开文件mongod.cfg添加如下配置: replication:replSetName: rs02. 重启MongoDB服务 3. 重启后执行命令 rs.initiate()...
风车IM即时通讯系统APP源码DJ2403版完整苹果安卓教程
关于风车IM,你在互联网上能随便下载到了基本都是残缺品, 经过我们不懈努力最终提供性价比最高,最完美的版本, 懂货的朋友可以直接下载该版本使用,经过严格测试,该版本基本完美无缺。 1.宝塔环境如下: Ngin…...
新增流计算计数窗口,TDengine 3.2.3.0 八大板块功能更新
自发布以来,TDengine 3.0 版本在研发人员和社区用户的共同努力下不断优化,产品的稳定性和易用性获得了大幅提升,在知轮科技的智慧轮胎系统、黑格智能 3D 打印业务、韵达快递业务、中国地震台网中心、中移物联智慧出行场景等众多企业项目中获得…...
【架构笔记3】做“用心”之人
凡事就怕“用心”二字,但是用心做事,其实如果没有前提和详情,这本就是一句正确的废话,在一些项目开发和落地过程中,我也有了一些新的体会,自认为不是多余。 我觉得心这个词至少包含四个含义:“…...
前端加密面面观:常见场景与方法解析
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
突破编程_前端_JS编程实例(目录导航)
1 开发目标 目录导航组件旨在提供一个滚动目录导航功能,使得用户可以方便地通过点击目录条目快速定位到对应的内容标题位置,同时也能够随着滚动条的移动动态显示当前位置在目录中的位置: 2 详细需求 2.1 标题提取与目录生成 组件需要能够自…...
扩展学习|系统理解数字经济
文献来源:[1]肖静华,胡杨颂,吴瑶.成长品:数据驱动的企业与用户互动创新案例研究[J].管理世界,2020,36(03):183-205.DOI:10.19744/j.cnki.11-1235/f.2020.0041. [2]陈晓红,李杨扬,宋丽洁等.数字经济理论体系与研究展望[J].管理世界,2022,38(02):208-22413…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
