在C语言中'\0'是字符串的结束标志,它经常被程序自动加在字符串后面。
'\0'的意思是 ASCII 码为 0 的字符,对应的字符是(Null),表示“字符串结束符”,是字符串结束的标志。
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcdef";//字符串结尾有'\0'
char arr2[] = {'a','b','c','d','e','f'};//字符数组结尾没有'\0'
printf("%s\n", arr1);
printf("%s\n", arr2);
//strlen是一个库函数,用来求字符串的长度,'\0'结束标志不算在字符串长度内
printf("%d\n", strlen("abc"));
printf("%d", strlen("abc\0def"));
return 0;
}
从上面这个代码示例以及打印结果可以看出,arr1是一个字符串,所以程序给它加上'\0'结束标志,程序读取到f后面的'\0'就结束了,打印结果就是字符串。
arr2是一个字符数组,程序没有给它加上结束标志,程序什么时候停止读取是随机的,打印结果就是字符串加乱码。
这里我们使用strlen函数,可以看出,结束标志不被计算到字符串长度内。
它其实就是告诉程序,在读取字符串时,读到哪一步该结束了。