本文主要是介绍(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型
这篇关于(20200331)C语言计算字符串长度(strlen函数和sizeof关键词)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!