C语言字符串结束符'\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