strlen函数求字符串长度和字符数组长度(0,’0‘,“0”,‘‘的区别)

Posted 軒邈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strlen函数求字符串长度和字符数组长度(0,’0‘,“0”,‘‘的区别)相关的知识,希望对你有一定的参考价值。

/*
	2022.06.02
	目的:
		strlen函数求字符串长度和字符数组的长度
	理论:
		1.计算字符串的库函数;
		2.strlen函数遇见空字符’\\0’时就立即结束返回;
		3.ASCII的值是'0'表示空字符,即'\\0';
	功能:
		
*/

#include<stdio.h>
#include<string.h>

int main(void)

	char cCh1 = 0x00; /* 16进制0x00翻译字符为’\\0’*/
	char cCh2 = '\\0'; /* \\0 的ASCII码值是0,表示一个字符串结束的标志空字符,表示的是转义字符 */
	char cCh3 = '0';  /* 字符0的ASCII码值是48,不是空字符 */
	int iInt4 = 0;    /* 整数0,ASCII码的值是0,字符表示空字符 */
	
	char* str1 = "abc";   /* 系统自动默认会在后面给字符串加上空字符\\0,是将其当成了一个整体,相当于字符串为“abc\\0” */
	char* str2 = "ab\\0c"; /* 因为中间有\\0,所以提前结束了计数 */
	char* str3 = "ab\\\\0c";/* 第二个斜杠被第一个斜杠转义,“\\\\0”表示的“\\\\”和“0”两个字符 */
	char* str4 = "abc0d"; /* 字符串中的0代表的是字符0,而不是数字0 */
	char* str5 = "0";     /* 这个表示的是字符串,由'0'和'\\0'两个字符组成 */

	char arry1[5] = '1','2','3','4','5';  /* 这是一个字符数组,他里面存放的并不是字符串(无‘\\0’),只是一系列字符,因为该数组中没有遇到空字符,所以会一直寻找,直到找到空字符,所以才会有随机长度 */
	char arry2[5] = '1','2','3','4','\\0'; /* 因为第五个元素是‘\\0’*/
	char arry3[5] = '1','2','3','4',0;    /* 因为数字‘0’等价于‘\\0’*/
	char arry4[5] = '0','0','0';          /* 因为该数组是部分初始化,所以除了前三个元素是字符‘0’外面,其余都是自动填充的数字‘0’,数字‘0’等价于‘\\0’,所以计数结束于第四个元素*/
	char arry5[5] = '1','2','3','4','0x00'; /* 一个16进制的字符是用4位二进制来表示的,1个字节是8位,那么4位就是半个字节,所以16进制的字符是半个字节大小 */
	char arry6[5] =  '1','2','3','4',0x00;  /* 因为16进制的‘0x00’翻译字符是‘\\0’*/

	printf("Line = %d, ASCII = %d\\n", __LINE__, cCh1); 
	printf("Line = %d, ASCII = %d\\n", __LINE__, cCh2);
	printf("Line = %d, ASCII = %d\\n", __LINE__, cCh3);
	printf("Line = %d, ASCII = %d\\n", __LINE__, iInt4);

	printf("Line = %d, strlen(str1) = %d\\n", __LINE__, strlen(str1)); 
	printf("Line = %d, strlen(str2) = %d\\n", __LINE__, strlen(str2));
	printf("Line = %d, strlen(str3) = %d\\n", __LINE__, strlen(str3));
	printf("Line = %d, strlen(str4) = %d\\n", __LINE__, strlen(str4));
	printf("Line = %d, strlen(str5) = %d\\n", __LINE__, strlen(str5));

	printf("Line = %d, strlen(arry1) = %d\\n", __LINE__, strlen(arry1));
	printf("Line = %d, strlen(arry2) = %d\\n", __LINE__, strlen(arry2));
	printf("Line = %d, strlen(arry3) = %d\\n", __LINE__, strlen(arry3));
	printf("Line = %d, strlen(arry4) = %d\\n", __LINE__, strlen(arry4));
	printf("Line = %d, strlen(arry5) = %d\\n", __LINE__, strlen(arry5));
	printf("Line = %d, strlen(arry6) = %d\\n", __LINE__, strlen(arry6));


	return 0;


/*
	程序运行结果:

	Line = 21, ASCII = 0
	Line = 22, ASCII = 0
	Line = 23, ASCII = 48
	Line = 24, ASCII = 0

	Line = 29, strlen(str1) = 3
	Line = 30, strlen(str2) = 2
	Line = 32, strlen(str3) = 5
	Line = 34, strlen(str4) = 5

	Line = 38, strlen(arry1) = 19
	Line = 40, strlen(arry1) = 4
	Line = 42, strlen(arry3) = 4
	Line = 44, strlen(arry4) = 3
	Line = 45, strlen(str5) = 1
	Line = 46, strlen(arry2) = 4
	Line = 47, strlen(arry3) = 4
	Line = 48, strlen(arry4) = 3
	Line = 49, strlen(arry5) = 19
    Line = 50, strlen(arry6) = 4
*/

以上是关于strlen函数求字符串长度和字符数组长度(0,’0‘,“0”,‘‘的区别)的主要内容,如果未能解决你的问题,请参考以下文章

字符串长度函数如何计算?从开始到第一个\0

c语言求数组长度strlen

哪个函数可以求字符串x的长度

字符串长度怎么算

C语言:写一个函数,求一个字符串的长度.在main函数中输入字符串并输出其长度

c语言数组长度函数