C语言字符串结束符'\0'的奥秘解析

创始人
2024-12-15 07:10:35
0 次浏览
0 评论

字符串的结尾标志是什么?

!='\0'。
当到达行尾时结束。

!意思是是或者不是;也可以理解为没有。
'\0'是行尾符号,由编译器自动添加。

例如,将字符串赋值给数组:u8str1[]={"cxjr.21ic.org"};实际上,数组str1在内存中的实际存储为:cxjrorg'\0'下面的'\0'是C编译系统自动添加的。

所以当用字符串指定初始值时;一般情况下,不需要指定数组的长度;系统会自行处理。
将字符数组str1中的字符串复制到字符数组str2中。
行尾标志“\0”也被复制。

但是......也有一些例外。
例如,当数组长度不足时。
假设我们定义一个数组长度,如U8str1[13]={"cxjr.21ic.org"}由于字符组str1的长度为13,后续信息将会丢失;即'\0,'丢失的。
此外,如果你给一个数组赋值;将每个字母用引号引起来。
'\0'也会丢失。
示例:u8str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};如果需要,数组以'\0'结尾;u8str1[]={"cxjr.21ic.org"}或(添加自身'\0'):u8str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'};或(故意存储。
空位):u8str1[14]={'c','x','j','r','.','2','1','i','c','。
','o','r','g'};

附加信息:

C语言编写规则:语句或包含在{}中的语句通常代表程序层次结构中的一个级别。
结构。
{}是一般与结构语句的第一个字母对齐,在用几个空格构成框架后,可以编写底层的单独语句或指令。
提供更清晰的视图并增加程序的可读性。
为了养成良好的编程风格,在编程时应该尽量遵循这些规则。

参考资料:

百度百科-C语言

c语言输入字符串结束的标志?

C语言中字符串的最后一个字符是['']。
C语言中没有特殊的字符串变量,字符串总是以['']结尾。

''是8位0000000。
由于字符类型中没有匹配的字符,所以写为''是字符串结束符号。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>空字符对应的二进制值为00000000,数字为000110000。

由于C语言中没有专门的字符串变量,所以经常使用字符数组来存储字符串。
字符串总是以''结尾。
因此,当字符串存储在数组中时,最后一个字符``也存储在数组中,用于指示字符串结束。
使用``标志,不需要使用字符数组的长度来确定字符串的长度。

说明:

将字符串赋值给数组:u8str1[]={"cxjr.21ic.org"}实际上数组str1是内存状态:cxjr.21ic.org''。
》之后,会由C编译器系统自动添加。
所以给字符串赋初始值时,一般不需要指定数组的长度,系统会自己管理。
复制字符串字符数组str1中的字符串结束标志也被复制。

情况:

1如果数组长度不够,如:u8str1[13]={"cxjr.21ic.org"},由于str1的长度为13,所以接下来的数据会丢失将字符用引号括起来,也丢失''例如:u8str1[]={'c','x','j','r',",'2','1','i','c',','o','r','g'};如果希望数组以''结尾,可以写以下三种之一:

u8str1[]={"cxjr.21ic.org"};//字符串赋值

u8str1[]={'c','x','j','r',','2','1','y,'c、'、''o','r','g',''};//手动添加

u8str1[14]={'c','x','j','r',','2','1','i','c',','','r','g'};//故意给数组预留空间

代码示例:

#include

#include

#include

热门文章
1
SQL多表连接查询全解析:JOIN语句应... sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...

2
Java中字符串类型详解:String与... 变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...

3
JavaSE与JavaEE:从基础到企业... javase&#160;和javaee的区别?JavaSE和JavaEE...

4
Java程序员面试必知:核心技术问答与技... java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...

5
Java.exe与Javaw.exe:区... 程序中java和javaw有什么区别java和javaw的区别:两者都是Java...

6
深入解析:Java中的javax包及其与... JAVA导入时,什么是javax?awt是java1.0,swing是java2...

7
大专生转行自学Java,迷茫时如何找到方... 我是大专生因没有好好学所以现在后悔了我想从事软件编程我正在自学java不知道怎么...

8
Java中Scanner类导入位置及使用... 在java中这句语言“importjava.util.Scanner;”是什么意...

9
Java数组倒序输出:排序后逆序存储方法... Java数组倒序输出?1.反转数组的方法有很多种,比如先排序,然后倒序存储pub...

10
C语言改错难题解析:第二处错误详解及修改... 请问这个C语言改错题怎么做呀?我做了很久都没写出来,第二处错误不知道怎么改。那位...