(20200331)C语言计算字符串长度(strlen函数和sizeof关键词)

参考:

【1】https://blog.csdn.net/u012209626/article/details/47449885?utm_source=blogxgwz5

+====================================================================

一般会用strlen()函数或sizeof来获取一个字符串的长度(sizeof其实求的类型大小,如sizeof(int)=4),但这2种方法获取的字符串的长度其实是不一样

ex01:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

int main(void)
{



		char s1[20] = "hello world";
		char s2[20] = { 'h', 'e', 'l', 'l', '0', ' ', 'w', 'o', 'r', 'l', 'd', '\0' };
		char s3[] = "hello\0 world";
		char s4[] = { 'h', 'e', 'l', 'l', '0', '\0', ' ', 'w', 'o', 'r', 'l', 'd', '\0' };
		printf("%d %d %d %d\n", strlen(s1), strlen(s2), strlen(s3), strlen(s4));
		printf("%d %d %d %d\n", sizeof(s1), sizeof(s2), sizeof(s3), sizeof(s4));

	system("pause");
	return 0;
}

说明:

1】上面定义了4个字符串,基本数据都是“hello world",,

字符串s1和s2给定了字符串数组的大小为20,然后使用2种方式进行赋值;

字符串s3和s4是s1和s2对比的字符串, 区别就是s3和s4字符串中间插入了一个'\0'。

2】strlen函数求得的字符串长度是从字符串第一个元素到第一个'\0'之间元素的个数(如果字符串中间有'\0',则结果不是整个字符串的长度),同时不包括该'\0'

3】 sizeof求得的结果是存储该字符串的变量占用的空间大小,因而一定会包括'\0'.若'\0'后还有空余的空间,也会包含到结果里面

4】2种求值方式的实现原理:

1. strlen()的一种实现就是遍历字符串,遇到'\0'就终止,因而返回的结果是第一个'\0'前字符元素的个数

2. sizeof 常用来求变量占用内存空间的大小,因而它返回的是存储字符串的变量所占用的内存空间大小,用来求字符串的长度,只在特定情况下可行,即字符数组刚好被一个字符串占满。

5】与strlen函数不同的是,sizeof不是一个函数,而是判断数据类型或者表达式长度符的关键字,也可以说是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数。

6】

数组的sizeof值等于数组所占用的内存字节数,如:

 char a1[] = "abc";
 int a2[3];
 sizeof( a1 ); // 结果为4,字符末尾还存在一个NULL终止符
 sizeof( a2 ); // 结果为3*4=12(依赖于int)

7】如何求数组中元素的个数呢?(以下两种方式是等价的)

int c1=sizeof(a1)/sizeof(char);//总长度/单个元素的长度  char型

int c2=sizeof(a2)/sizeof(a2[0]);//总长度/第一个元素的长度 int型

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值