原创 小贴士:关于'\0'字符串结束标志

2009-3-21 14:09 3103 7 10 分类: MCU/ 嵌入式

小贴士:关于'\0'字符串结束标志


匠人今天看到这样一条语句:
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'};
 
 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

tengjingshu_112148725 2009-4-10 22:12

'\0' ASCII为00H,所以预留空位应该是行的,我今天也琢磨了这个问题半天

ilove314_323192455 2009-3-21 23:10

我见过一个做软件的牛人用过。好像是做一个字库,然后用这种方法进行ASCII译码取字模

用户193360 2009-3-21 20:25

编程这东西整天和字符串打交道
相关推荐阅读
程序匠人 2011-08-19 16:42
串口调试利器——《串口猎人》V31 免费发布!
匠人按:《串口猎人》V31是继之前的V26、V29版本之后的最新升级版本。诸多细节改进不一一道来了。免费发布。 下载:串口猎人 ( Serial Hunter ) V31 setup.rar (2.7...
程序匠人 2011-06-24 11:25
匠人开发的一款串口调试工具——串口猎人 ( Serial Hunter ) V26
《串口猎人》十大功能简介: 1、基本功能,支持基本的 收、发、查看、保存、清除等功能。2、基本功能,自动/手动搜索串口,串口参数的设置和查看。3、基本功能,支持HEX/ASCII/中文汉字收发。4、高...
程序匠人 2010-07-10 20:49
招聘会花絮
招聘会花絮招聘会上常常会遇到一些让人啼笑皆非的趣闻和花絮:花絮1:应聘者:“偶是来应聘某某职位的,这是偶的简历。”匠人:“您好!请坐……”(一边接过简历一边随口问道)“哪年毕业的?”应聘者(脸不红心不...
程序匠人 2010-07-08 10:40
给我64只章鱼,我也可以通吃世界杯了
昨天谁赢了?西班牙?德国?——还是保罗?忘记那些足球专家和名宿们吧,甚至被认为是乌鸦嘴的贝利。他们的预测在章鱼保罗的面前,简直就是小儿科。经过90分钟的恶战,西班牙队1比0淘汰了章鱼保罗的祖国德国队。...
程序匠人 2010-06-28 14:11
周末,在佘山钓鱼(有图有真相)
昨天和木华去佘山钓鱼俺的个人战绩:钓出水面3条小鱼,收杆不及时脱钩1条,从水桶中又蹦出去1条……大家肯定很好奇,最后一条,匠人怎么处理的呀?呵呵 放生?or回家烧鱼汤? 鱼头烧汤鱼肚清蒸鱼尾红烧可怜,...
程序匠人 2010-05-05 20:02
通过两张趣图,看工程师的自我反省
很久没有关注其他网友的博客了,那天机缘巧合,看到两位网友分别转载的图片,很有意思。第一张图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试...
EE直播间
更多
我要评论
3
7
关闭 站长推荐上一条 /3 下一条