字符串 占位符 转义字符

一.字符串

  • 字符串的结束标志是\0,所以在计算字符串长度时,一直数到\0之前,不包括\0
  • C语言没有原生的字符串类型,但是字符串实际上是字符数组,我们谈论字符串的类型时,通常会说它是char类型的数组。eg.char arr[10]="abcdef",代表char类型的一个数组叫arr
  • 里面能放10个元素或者10个字符。

举三个例子:
char arr1[]="abcdef";
char arr2[]={'a','b','c','d','e','f'};
char arr3[]={'a','b','c','d','e','f','\0'};

首先arr1打印出来是abcdef,因为这是字符串,末尾有隐藏的\0
arr2会打印错误,最终打印出来的结果是一堆乱码,直到出现\0,才会停止乱码的打印。

原因是用单引号隔开是一个一个的字符,而不是字符串,既然是字符,末尾就没有隐藏的\0,
arr3正确,最终会打印出来abcdef

二.占位符

%c打印字符
%d打印有符号十进制整数
%s打印字符串,遇空格停止读取
%f打印浮点数,小数,float类型的数据
%lf打印浮点数,小数,double类型的数据
%zu(或%zd)是size_t类型
%u打印无符号十进制整数
%%输出一个%
%o八进制输出
%x十六进制输出
%p指针,地址
----------------------------------------%hd:十进制short int类型
%ho:八进制short int类型
%hx:十六进制short int类型
%hu:无符号十进制short int类型,即 unsigned short int
%ld:十进制long int类型
%lo:八进制long int类型
%lx:十六进制long int类型
%lu:无符号十进制long int类型,即: unsigned long int
%lld:十进制long long int类型
%llo:八进制long long int类型
%llx:十六进制long long int类型
%llu:无符号十进制long long int类型,即: unsigned long long int

三.转义字符

重点:

因为转义字符在编程语言中通常被视为字符序列,而不是字符,所以打印时是用双引号字符串的形式打印。

\n代表换行

\'表示转义后打印一个单引号

\"表示转义后打印一个双引号

\\表示转义后打印出来一个\ ,相当于斜杠转义斜杠

\t是水平制表符,相当于Tab键
\a表示报警  

\r代表把光标定位到开头,而\n代表换行,他俩的作用加在一起就是enter键
\b是退格键    代表光标回退到前面一个字符,但不删除字符   写法:printf("\b");

三字母词 

三字母词对应的字符
??=              *
??([
??)]
??<{
??>}
??//
??!|
??'^
??-~

也就是说当你想打印出(are you ok??),但是因为存在三字母词,最终打印结果会是(are you ok]

eg.

通过运行结果,可能有人就会有疑问了,为什么跟上述不一致?

那是因为有些编译器不处理三字母词,会将他当做普通字符串来对待
像VS2022和DEVc++,就不会处理三字母词,所以不用再使用转义字符了,更加便捷
当然有一些编译器比如VS2008,这种比较旧的版本可能就容易被解析成三字母词

为什么会有三字母词的出现?

原因是在以前的老式键盘中,类似"{},[],(),|"等符号在当时还都没有,为了解决这个问题,就通过三字母词来替代它

\ddd表示1~3个八进制数字  写法:printf("%c\n",'\ddd');

为什么这个转义字符是要用单引号括起来?
   因为:他本质是通过8进制转为10进制后,对应ASCII码中的某一个字符

因为8进制转10进制:0 * 8 ^ 0 + 3 * 8 ^ 1 + 1 * 8 ^ 2 = 88, 而88对应字母X

\xdd(或\xddd)表示1~2(1~3)个16进制数字

计算过程:3*16^0+6*16^1+0*16^2=99,而99对应字母c

练习一下吧~~:

printf("%d\n",strlen("c:\test\628\test.c")); 它的结果是多少?

哪14个?分别是:    c   :   \t   e   s   t   \62   8   \t   e   s   t   .   c  这14个,注意\628不能被看作为是一个转义字符,因为\ddd要求是1~3个八进制(0~7)

写作不易,若有疑问,请各位大佬指点~~感谢


 

数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值