空格字符VS空字符

字符串操作)关于一个字符串加空格 《Python无师自通》第六章的小练习。 阅读详情

最近项目中需要资金对账,对账文件由定长域组成,里面有很多空格符号。

空格符号和空字符是不一样的,在ASCII里面,空格(space)符号的ASCII码是0x20,而空字符是0x0,2个是完全不一样的2个字符呵呵.

空字符一般来描述一个字符串的结尾,其实是控制符的一种,但不能理解为没有字符,应该理解为代表什么都没有的字符.好比回车0x0A和换行0x0D虽然不显示,但是也是控制字符的一种.(这些字符以前是用于打印机的,所以很多都没有用了)

字符串的概念:在C语言中,字符串是指由若干个有效字符(其中包括字母、数字、转义字符、等)组成的系列,以'\0'作为字符串结束标志。'\0'是一个“空操作”字符,它不做任何操作,只是一个标志。'\0'的代码值为0,它不计入串的长度。

还有这里需要注意下在接受字符串的时候,如果用scanf来接收的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是harry potter 那么实际上scanf只能获取harry这个单词。所以要接收空格的话可以用gets()这个函数。

补充:C语言中字符串结束符'\0'就是0.

》》'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。 补充:这个你要去学下基础的,数值类型存储时,最高位决定正负号,其他位都为0可不就是0了么? '\0'是转译字符,意思是告诉程序,这不是字符0,我要的是数字0的2进制直接放进来,因为acsii码的0可不是00000000



关于'\0'字符串结束标志  

http://xinyi898996.blog.163.com/blog/static/51696162200945934729/

今天看到这样一条语句:
while(*ddata!='\0') DisplayOneChar_LCD(x++,y,*ddata++);

       没有用过,也没有见过这个'\0',凭直觉理解,这个'\0'应该是用于判断字符串数组是否结束。不过,还是不太了解原理,连忙上网去搜索。要说吧现在有了网络确实是好,什么难题都可以在网上找到答案。

      原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

'\0'就是 字符串结束标志。

比如说,把一个字符串赋值给数组:
u8 str1[]={"cxjr.21ic.org"};
实际上数组str1在内存中的实际存放情况为: 
c x j r . 2 1 i c . o r g '\0' 
这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。 
把字符数组str1中的字符串拷贝到字符数组str2中。串结束标志'\0'也一同拷贝。

但是……也有一些例外情况发生。
比如,当数组长度不够。假设我们指定了数组长度,如:
u8 str1[13]={"cxjr.21ic.org"};
由于字符组str1的长度为13,所以后面的信息会丢失,即'\0'丢失。

另外,如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。如:
u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};
如果希望数组以'\0'结束,则要么写成:
u8 str1[]={"cxjr.21ic.org"};
要么写成(人工添加'\0'):
u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'};
要么写成(故意给数组预留一个空位):
u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};



QString 去空格 1.别嫌函数参数多——有 5 种模式已经算精简了,我还见过更细的(只删制表符、只删非断行空格等),但日常这 5 种足以覆盖 90% 的需求。2.正则表达式虽好,但性能不如直接遍历——如果你的字符串很长(比如几 MB 的文本),用正则删除所有空格可能比手动遍历慢。但大部分 UI 输入都是短字符串,用正则清爽又省事。3.建议封装成静态工具函数,全局可用,这样每个项目都不用再重复造轮子。4.如果你不确定该用哪种,默认选 type 2(trimmed),因为这是最保守、最符合用户直觉的。其他模式作为扩展。 阅读详情

相关推荐

Linux系统下SAPGUI安装包选择与避坑指南

本文详细介绍了在Linux系统下选择和安装SAPGUI安装包的策略与避坑指南。重点解析了不同版本安装包的关键区别,特别是Linux版必须包含linux-lib.jar和linux64-lib.jar文件,避免误用Mac或Windows版导致的兼容性问题。文章还提供了针对Ubuntu、RHEL等不同Linux发行版的安装实战指南,以及常见报错的解决方案,帮助用户顺利完成SAPGUI的安装与配置。

weixin_28366353的博客 614

C语言中空白字符空字符的区别

空白字符是指在屏幕上不会显示出来的字符(如:空格、制表符tab、回车换行等),而空字符是指‘\0’,或者是字符的编码值为0的字符,它是非打印字符。C的字符串存储时通常以空字符结束,该字符的存在意味着数组的单元数必须至少比要存储的字符数多1 ...

qq_63132518的博客 3688

MCP详解:手把手教你理解和如何使用各种开源MCP服务

MCP 作为一种开放协议,为 AI 模型与外部世界的连接提供了标准化的解决方案。它不仅降低了开发门槛,还极大地扩展了 AI 应用的边界。无论是开发者还是普通用户,都可以通过 MCP 更高效地利用 AI 技术,实现更多智能化的功能。

王哥儿聊AI的博客 5953

空字符和空白字符

空格、制表符、换行符(创建新行)、回车符、换页符、垂直制表符称为“空白字符”,因为它们与打印页上的单词和行之间的空格一样都是起到方便阅读的作用。 标记由空白字符和其他标记分隔(划分边界),如运算符和标点。 在分析代码时,C 编译器将忽略空白字符,除非您将它们用作分隔符或者字符常量或字符串文本的组成部分。 使用空白字符可以让程序更易于阅读。 请注意,编译器也将注释视为空白。 C语言的空字符是在字符串结尾系统自动加上的\0,以让系统识别出一个字符内串的结尾。如:字符串“china”。在系统内是以“china\0

Fishfishfishfishcat 1万+

输入输出流与空格

我理解的输入输出流: 输入过程: A.键盘->输入缓冲区 B.输入缓冲区->cin时赋值给变量 输出过程: C.变量->cout时存入输出缓冲区 D.输出缓冲区->显示器 有以下代码,为什么前4个代码块的输出一样呢?我感觉涉及到以下问题点: 1.用cin赋值给字符串,与用istringstream赋值给字符串,有什么区别? 2.跳过空格,指的是键入的空格不存储到输入缓冲区里...

weixin_44431585的博客 709

Java空白字符和空白符号的区别

空白字符和空白符号有区别的,空白字符是一类符号的统称,空白符号缺只是一个符号。 空白字符包括 制表符,空格符,换行符。 空白符号 在编程中表示  带键盘中代表空格符。 空白字符包括空白符号。 ...

qq_52405170的博客 2949

ascii码表中的NUL 和空格的区别

ascii码表中的NUL 和空格的区别

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 1132

C# Visual Studio 删除字符串数组中的空字符

@[删除字符串数组中的空字符串) 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command + Shift + O 检查列表:Ctrl/Command + Shift + C 插入代码:Ctrl/Command + Shift + K 插入链接:Ctrl/C

yonglwin的博客 947

通过 Python 删除 Excel 中的空白行列

本文介绍使用Python的Free Spire.XLS库高效删除Excel空行空列的方法。相比传统遍历单元格方式,该库提供IsBlank属性直接判断整行/列是否为空,通过倒序删除策略实现快速清理。

2511_93049661的博客 567

Java删除空字符:Java8 & Java11

Java删除空字符:Java8 & Java11 操作字符串是编程时经常遇到的,常用的比如在字符串中处理空格。到目前为止,Java提供了很多从字符串中删除空格的不同方法,即trim,replaceAll。但是,Java 11通过诸如strip,stripLeading和stripTrailing之类的方法对这些方法进行了一些功能性的拓展。 在大多数情况下,我们只使用trim()方法删除空格。有时候不禁停下来想一想是否有更好的方法来满足我们的需求?当然,trim()在大多数情况下都能很好地工作,但

Java码农那些事 1437

scanf输入%s,%c遇到空白字符的一些思考

scanf输入%s,%c遇到空白字符的一些思考问题引入字符%c与%s空白符空字符‘/0’与空格的区分scanf()输入与字符串的一些定义形式 问题引入  原题链接link 输入格式: 第一行包含整数 N,表示操作数。 接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。   输入方法: 输入格式: 2 I abc Q abc #include<iostream> using namespace std; void insert(char str[]) { //插入操作

Heck_Jacke的博客 9902

1.java把s里面空格删除_Java删除空字符:Java8 & Java11

操作字符串是编程时经常遇到的,常用的比如在字符串中处理空格。到目前为止,Java提供了很多从字符串中删除空格的不同方法,即trim,replaceAll。但是,Java 11通过诸如strip,stripLeading和stripTrailing之类的方法对这些方法进行了一些功能性的拓展。在大多数情况下,我们只使用trim()方法删除空格。有时候不禁停下来想一想是否有更好的方法来满足我们的需求?当...

weixin_39915500的博客 273

EXCEL删除空格trim VS substitute

其实trim之后,1和2,abc之间还是有空格的,如何我们想去除掉行内空格,可以用substitute 替换函数,将空格替换为空,即 =SUBSTITUTE(原字符," ","")我们在复制网页文字、数据时,往往容易出现字符内有空格的情况,一般我们会使用trim修剪,但是trim只能去除单元格行首/行尾空格,如图。注:len函数用于返回单元格内字符串的长度(含行前行尾空格)替换之后,整段文字便没有空格了。

东哥的博客 1027

C语言&Python&Bash&Tcl:空白(空格、水平制表符、换行符)与转义字符

C语言中的空白(空格、水平制表符、换行符)被用于分隔Token,因此Token间可以有任意多个空白。

博客是兴趣使然,大家互相学习 2292

string字符串遇到的问题 以及字符串为空或空格问题

http://bbs.bccn.net/thread-367153-1-1.html  可能是没有cin输入 判断字符串为空: bool empty() const;  The member function returns true for an empty controlled sequence. string a; if(a.empty()) printf("empty")

tianzhijiaozi19的专栏 1454

ABAP 里的 space 常量:一个空格引发的字符串陷阱与工程化最佳实践

ABAP空格处理的核心问题与解决方案 本文深入分析了ABAP中空格处理的常见问题,揭示了space常量的本质特性及其在实际开发中的陷阱。关键点包括: space的本质:它是长度为1的固定字符类型(c),而非字符串(string),在多数操作中尾随空格会被忽略 典型问题场景: 接口集成时空格作为协议部分被意外截断 文件导出时补齐空格失效 OData过滤条件拼接错误 工程解决方案: 表达空格:优先使用字符串字面量` ` 拼接空格:使用SEPARATED BY语法 保留空格:使用RESPECTING BLANKS

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1825

c++ 删除string开头的0_Java删除空字符:Java8 & Java11

操作字符串是编程时经常遇到的,常用的比如在字符串中处理空格。到目前为止,Java提供了很多从字符串中删除空格的不同方法,即trim,replaceAll。但是,Java 11通过诸如strip,stripLeading和stripTrailing之类的方法对这些方法进行了一些功能性的拓展。在大多数情况下,我们只使用trim()方法删除空格。有时候不禁停下来想一想是否有更好的方法来满足我们...

weixin_39870199的博客 230

C++字符

另外,各种C++输入工具通过键盘输入,将字符串读入到。数组中,字符不超过19个(最多18个字符,余下的空间用于存储自动在结尾处添加的空字符)。第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符就是换行符。注意:C++很多字符串处理函数,都逐个地处理字符串中的字符,直到到达空字符为止。方法不丢弃换行符,而是将其留在输入队列中。字符串常量(字符串字面量),使用双引号括起字符串即可。函数读取整行,它通过回车键输入的换行符来确定输入结尾。因确保数组足够大,能够存储字符串作用所有字符

了凡 714

深刻搞懂scanf与cin在读取时遇到空格的处理

在读取数据时,scanf与cin再处理空格时的差异

qq_59702185的博客 1288

C++中cin与scanf关于混用与空格相关问题解析

C++中cin与scanf关于混用与空格相关问题解析

qq_62324715的博客 2114

驱动程序-显卡驱动-conexant fusion 878a 驱动(采集卡驱动) win xp.zip

驱动程序-显卡驱动-conexant fusion 878a 驱动(采集卡驱动) win xp.zip

上一篇: GDB调试精粹及使用实例(From ChinaUnix)
下一篇: 编译动态库时遇到relocation R_X86_64_32 against `a local symbol'的错误
usbdrivers
博客等级 码龄14年 26粉丝 57原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值