字符串数组中,strlen与sizeof的比较

	char str1[15]="hello";	//用""赋值系统会在字符串结尾自动添'\0'
	printf("strlen_str1 = %ld\n",strlen(str1));
	printf("sizeof_str1 = %ld\n",sizeof(str1));
	//>>>strlen_str1 = 5
	//>>>sizeof_str1 = 15
	//若字符串数组长度给定,strlen遇到到'\0'结束,且不统计'\0',而sizeof统计整个数组长度

	char str2[]="hello";
	printf("strlen_str2 = %ld\n",strlen(str2));
	printf("sizeof_str2 = %ld\n",sizeof(str2));
	//>>>strlen_str2 = 5
	//>>>sizeof_str2 = 6
	//若字符串数组长度未给定,赋值结束后,系统会根据字符串长度,固定字符串数组的长度
	//同样,strlen遇到到'\0'结束,且不统计'\0',而sizeof统计整个数组长度

	char str3[]="你好";
	printf("strlen_str3 = %ld\n",strlen(str3));
	printf("sizeof_str3 = %ld\n",sizeof(str3));
	//>>>strlen_str3 = 6
	//>>>sizeof_str3 = 7
	//原因:与系统所采用的字符编码方式有关
	//如果系统采用的是utf-8,那么strlen("你")=3,即一个汉字占用3个字节。Linux系统默认情况下采用的该种编码方式。
	//如果系统采用的是gb2312,则strlen("你")=2,即一个汉字占用2个字节。windows中文版采用的该种编码方式。

	char str4[15] = {'h','e','l','l','o'};	//''单个赋值不会自动加'\0'
	printf("strlen_str4 = %ld\n",strlen(str4));
	printf("sizeof_str4 = %ld\n",sizeof(str4));
	//>>>strlen_str4 = 5
	//>>>sizeof_str4 = 15

	char str5[] = {'h','e','l','l','o'};
	printf("strlen_str5 = %ld\n",strlen(str5));
	printf("sizeof_str5 = %ld\n",sizeof(str5));
	//>>>strlen_str5 = 10(未知数)		strlen找不到'\0'会一直找下去
	//>>>sizeof_str5 = 5

	char str6[] = {'h','e','l','l','o','\0'};
	printf("strlen_str6 = %ld\n",strlen(str6));
	printf("sizeof_str6 = %ld\n",sizeof(str6));
	//>>>strlen_str6 = 5
	//>>>sizeof_str6 = 6

	char str7[] = {'h','\n','e','l','l','o','\0','a'};
	printf("strlen_str7 = %ld\n",strlen(str7));
	printf("sizeof_str7 = %ld\n",sizeof(str7));
	//>>>strlen_str7 = 6	strlen会统计\n,但不会结束
	//>>>sizeof_str7 = 8


	#if 0
	//C语言中1个汉字占2个字节,但''中只能存1个字节,所以此写法错误
	char str4[15]={'你'};
	printf("strlen_str4 = %ld\n",strlen(str4));
	printf("sizeof_str4 = %ld\n",sizeof(str4));
	#endif

	return 0;
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值