C语言辨析——这个字符串长度是多少?

1. 问题

请问字符串"\tac\b\b\x41\nc\104\""的长度是多少?

2. 解答

该字符串的长度为10。这10个字符分别是水平制表符'\t','a','c',两个退格符'\b','\x41'对应的字符’A',换行符'\n','c',’\104'对应的字符'D',还有字符'\"',其中,'\t'、'\b'、'\x41'、'\n'、’\104'和'\"'都是转义字符,'\x41'表示十六进制数,’\104'表示八进制数,它们对应的字符分别是'A'和'D'。

针对这个问题,我们再深入思考,如果要打印输出该字符串,显示的结果是什么呢?

我们先来分析转义字符,其他字符原样输出即可。

'\t'水平制表符,由于它是输出的第一个字符,所以,会显示8个空格。

'\b'退格符,该字符对应键盘上的退格键。我们平时在编辑文本时,使用该按键,光标回退一个字符位置,并删除该位置前字符。

图片

'\x41'输出A

'\n'换行

’\104'输出D

'\"'输出"

根据以上分析,输出结果应该是两行,分别是:

        A

cD"

其中第1行输出8个空格和一个字符A,第二行输出cD"这3个字符。

请问:以上分析正确吗?

让我们通过实验来验证吧。请分析下面的程序。


#include <stdio.h>
#include <string.h> 
int main ()
{char str[]="\tac\b\b\b\x41\nc\104\"";printf("str的长度:%d\n",strlen(str));printf("str占用空间大小:%u\n",sizeof(str));printf("1234567890\n");  printf ("%s",str);return 0;
}

程序运行结果如下:

图片

显然,程序运行结果与我们分析的结果不一样啊!这是为什么呢?

原因是退格符'\b'的问题,在一些应用程序或操作系统中,每当在文字编辑或输入命令时,当按一次退格键,应用程序或操作系统会使光标回退一个位置,并将该位置的字符清除。也就是说退格键的作用是使光标回退一个位置,清除该位置的字符是操作系统或应用程序给这个按键增加的功能。而在我们这个程序中,我们只是显示字符串中各个字符,并没有对每个字符进行处理,也就是说只显示了'\b'字符,并没有清除光标处的字符,因此,我们看到的结果是光标回退了一个位置,该位置上的字符并没有清除,因为我们的程序没有实现这项功能。按这个思路,我们再来分析字符串的输出情况如下:

\tac 这部分输出水平制表符和ac,即8个空格和ac,

    ac

\b\b这两个字符是退格键,让光标往回移动两个字符位,即光标在a字符处,因没显示一个字符,光标会移动到下一个位置。

\x41\n这两个字符是‘A’和换行符,因此输出A然后光标回到下一行。此时看到的输出是

    Ac

最后输出c\104\"这三个字符,其中’\104‘是字符'D',这3个字符序列是cD",因此,真实的输出结果是:

    Ac

cD"

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七周周报

文章目录 摘要目标检测锚框交并比NMS 非极大值抑制输出 文献阅读&#xff1a;SMPL: A Skinned Multi-Person Linear ModelIntroductionRelated WorkModel FormulationTraining评估动态SMPL讨论结论 总结 摘要 本周看了三维人体重建的领域&#xff0c;看了一篇SMPL的文章&#…

腾讯云免费服务器-多规格高配服务器0元试用,开箱即用

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

大数据之谷歌文件系统论文 GFS The Google File System

原文地址 谷歌文件系统论文 摘要 我们设计并实现了Google文件系统&#xff0c;这是一个面向大规模分布式数据密集型应用的可扩展分布式文件系统。 它在廉价的通用硬件上运行&#xff0c;提供了容错性&#xff0c;并向大量客户端提供高聚合性能。 尽管与先前的分布式文件系统…

全网唯一!Matlab周杰伦专辑配色包MJay

前段时间杰伦出了新歌&#xff0c;第一时间听完&#xff0c;感觉没过瘾&#xff0c;便又翻出他以前的作品&#xff0c;想着继续回忆青春。 翻着翻着&#xff0c;突然发现每张专辑封面的配色都别有一番味道&#xff0c;似乎可以搞些事情…… 于是&#xff0c;我默默打开了Matl…

Matlab:toposort

语法&#xff1a; n toposort(G) %调用toposort函数&#xff0c;对有向图G进行拓扑排序&#xff0c;并将排序结果存储在变量n中 n toposort(G,Order,algorithm) [n,H] toposort(___) %使用了两个输出参数的形式来调用toposort函数。除了返回排序结果n外&am…

直接写一区! ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别程序,特征可视化,实验多!图多!

适用平台&#xff1a;Matlab2023版本及以上 本原创程序提出的ZOA-PCNN-AT-SVM故障识别模型还没有人写&#xff01;在此基础上进一步对参考模型进行多重改进&#xff0c;程序注释清晰&#xff0c;干货满满&#xff0c;下面对文章和程序做简要介绍&#xff01; ①识别模型部分参…

Realm Management Extension领域管理扩展(下)

四、颗粒保护检查 本节描述了RME引入的颗粒保护检查。颗粒保护检查使得能够在不同的物理地址空间之间动态分配内存区域。 本节将向您介绍以下功能: 颗粒保护表的结构用于颗粒保护检查的故障报告区域在物理地址空间之间的过渡正如在物理地址一节中所述,RME提供了四个物理地址…

电影开场后也能退票,“电影仅退款”能治烂片病吗?

1月11日&#xff0c;“#电影开场后也能退票了#”词条登上微博热搜。 根据央视六套《中国电影报道》&#xff0c;从今年元旦开始&#xff0c;湖南长沙部分影院开启了新型电影保险模式的试点。 在电影开场后30分钟以内&#xff0c;市民如果对电影内容不满意&#xff0c;可借助小…

【Google SEO】需要跟踪的 12 个关键 Google Analytics 指标

Google Analytics 是一个数据宝库。但对于初学者来说&#xff0c;它可能会让人不知所措。 从哪里入手&#xff1f;哪些指标真正重要&#xff1f; 在本篇文章中&#xff0c;我们将介绍 Google Analytics 中最重要的 12 个指标。这些指标可以最清晰地反映网站的性能。 我们将解…

深入理解Lock Support

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天咱们要聊聊Lock Support。Lock Support是Java并发编程的一块基石&#xff0c;它提供了一种非常底层的线程阻塞和唤醒机制&#xff0c;是许多高级同步工具的基础。 为什么要关注Lock Support&#xff1f;线程…

SAP SQVI制作报表及SE93创建事务代码

在平时的项目中&#xff0c;财务想查询所有的凭证明细&#xff0c;SAP的查询凭证FB03不能满足需求&#xff0c;所以用SQVI制作一个简易的查询报表。 1、打开SQVI&#xff0c;填写自开发报表的名称“ZFB03”&#xff0c;点击“创建”&#xff0c;输入自开发报表的名称“凭证明细…

优化的实时换脸项目——DeepFaceLive

DeepFaceLive是一款基于人工智能技术的换脸工具&#xff0c;可以实现实时面部捕捉和换脸效果。它利用深度学习和计算机视觉算法&#xff0c;能够以惊人的准确度和速度将脸部特征无缝地映射到任何人的脸上。DeepFaceLive的特点是可以实时换脸&#xff0c;让用户通过网络摄像头应…