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

news2024/11/17 3:01:04

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.coloradmin.cn/o/1390643.html

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

相关文章

R语言【paleobioDB】——pbdb_subtaxa():统计指定类群下的子类群数量

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_subtaxa (data, do.plot, col) Arguments…

NLP论文阅读记录 - 2021 | WOS 基于动态记忆网络的抽取式摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.前提三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Extractive Summarization Based on Dynamic Memory Network&#xf…

【学习iOS高质量开发】——熟悉Objective-C

文章目录 一、Objective-C的起源1.OC和其它面向对象语言2.OC和C语言3.要点 二、在类的头文件中尽量少引用其他头文件1.OC的文件2.向前声明的好处3.如何正确引入头文件4.要点 三、多用字面量语法&#xff0c;少用与之等价的方法1.何为字面量语法2.字面数值3.字面量数组4.字面量字…

chrome浏览器开启硬件加速无法打开提示“此设置有你的管理员管理“

chrome浏览器开启硬件加速无法打开提示"此设置有你的管理员管理" winR 输入regedit 打开注册表注册表搜索 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome删除 HardwareAccelerationModeEnabled重启Chrome浏览器。打开Chrome浏览器&#xff0c;查看设置…

【Java数据结构 -- 实现双链表的接口方法】

双链表 1.双链表2.双链表的创建3.双链表的头插节点4.双链表尾插5.双链表根据索引找节点6.双链表根据索引插入节点7.双链表删除值为key的节点8.删除所有值为key的节点9.双链表是否包含值为key节点10.双链表大小11.清空双链表12.打印双链表 1.双链表 双链表是一种数据结构&#…

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析&#xff08;Singular Spectrum Analysis&#xff09;是一种处理非线性时间序列数据的方法&#xff0c;可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…

部署YUM仓库及NFS共享存储

引言&#xff1a; 学习YUM 软件仓库&#xff0c;可以完成安装、卸载、自动升级 rpm 软件包等任务&#xff0c;能够自动 查找并解决 rpm 包之间的依赖关系&#xff0c;而无须管理员逐个、手工地去安装每个 rpm 包&#xff0c;使管理员在维护大量 Linux 服务器时更加轻松自如。特…

20240116-【UNITY 学习】增加滑动功能

替换脚本PlayerMovement_02.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMovement_03 : MonoBehaviour {private float moveSpeed; // 玩家移动速度public float walkSpeed 7; // 行走速度public float sprintSpee…

竞赛保研 基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…

图像处理:孤立点的检测

图像处理-孤立点的检测 孤立点的检测在图像处理中通常涉及到检测图像中的突变或者边缘&#xff0c;而使用二阶导数是一种常见的方法。一阶导数可以帮助找到图像中的边缘&#xff0c;而二阶导数则有助于检测边缘上的峰值&#xff0c;这些峰值可能对应于孤立点或者特殊的图像结构…

2024美赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#xff0c…

帆软笔记-决策表报对象使用(两表格联动)

效果描述如下&#xff1a; 数据库中有个聚合商表&#xff0c;和一个储能表&#xff0c;储能属于聚合商&#xff0c;桩表中有个字段是所属聚合商。 要求帆软有2个表格&#xff0c;点击某个聚合商&#xff0c;展示指定的储能数据。 操作&#xff1a; 帆软选中表格单元&#xf…

Windows Server 2019配置DNS服务器

正文共&#xff1a;1234 字 31 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我们在给Windows Server添加角色和功能时&#xff0c;会发现有一项“远程桌面服务安装”&#xff0c;它的介绍为“为虚拟桌面基础结构&#xff08;Virtual Desktop Infrastructure&#xff0c;VDI&…

PyTorch Tutorial 2.0

这里是对于PyTorch Tutorial-CSDN博客的补充&#xff0c;但是与其相关的NLP内容无关&#xff0c;只是一些基础的PyTorch用法的记录&#xff0c;主要目的是能够自己生成一些模拟的数据集。先介绍随机数的目的是因为based on随机数方法。 当然在看随机数的方法的时候&#xff0c…

Python 最新版本 3.12.1 环境配置(windows)

文章目录 python 3.12.1环境安装3.12.1 网盘下载3.12.1 官网下载 python 安装完成测试第一个 python 程序Hello Python python 3.12.1环境安装 3.12.1 网盘下载 python 3.12.1 百度网盘地址&#xff1a;https://pan.baidu.com/s/1SAcH_uH0T3DiERn6AZeQlg?pwd4242 提取码&a…

java-Lambda 语法总结

文章目录 Lambda 语法概览Lambda 表达式语法1.Lambda 表达式与函数接口2.Lambda 遇上 this final Lambda 语法概览 String(] names {”Justi n ”,”caterpillar”,”Bush " }; Arrays . sort (names, new Compara tor<String> () { publ int compare (String na…

伪装目标检测模型论文阅读之:Zoom in and out

论文链接&#xff1a;https://arxiv.org/abs/2203.02688 代码;https://github.com/lartpang/zoomnet 1.摘要 最近提出的遮挡对象检测&#xff08;COD&#xff09;试图分割视觉上与其周围环境融合的对象&#xff0c;这在现实场景中是非常复杂和困难的。除了与它们的背景具有高…

布隆过滤器四种实现(Java,Guava,hutool,Redisson)

1.背景 为预防大量黑客故意发起非法的时间查询请求&#xff0c;造成缓存击穿&#xff0c;建议采用布隆过滤器的方法解决。布隆过滤器通过一个很长的二进制向量和一系列随机映射函数&#xff08;哈希函数&#xff09;来记录与识别某个数据是否在一个集合中。如果数据不在集合中…

两个方法实现echarts散点图的高光圆点

一、效果图&#xff1a; 二、代码 方法一&#xff1a;通过series的itemStyle进行设置&#xff0c;type为scatter 在 ECharts 中&#xff0c;要在二维散点图上实现看似 3D 的高光圆点效果&#xff0c;可以通过自定义散点图的 itemStyle 属性来实现。虽然无法直接创建真正的 3D…

Flume 之自定义 Source

1、简介 Flume 自带 Source 有 Avro、Thrift、Netcat、Taildir、Kafka、Http等&#xff0c;有些场合比如我们指定访问接口获取数据当做 Flume 的 Source&#xff0c;像这种定制化的 Source 需要我们自己实现&#xff0c;下面我将介绍如何自定义实现 Source。 2、自定义实现 Fl…