初识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…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
