TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
源代码:- /*
- 1、sizeof()函数取的是该数据所占内存空间的大小;
- 2、sizeof()对字符串长度进行计算时,取的是字符串字符数加1(\0也算一个);
- 3、strlen()函数也是计算的是字符串的长度,但以\0做为计算结束符,因此正常情况下为字符串内字符的个数;
- 4、如果字符串内包含"\0",sizeof()会将该字符算入所占空间数,strlen()则计算至此为止;
- 5、一般情况下,sizeof()所计算出来的长度比strlen()计算出来的长度数要大1;
- 6、如果字符串中包含"\0",strlen()计算则会出现错误;
- 7、32位编译器中中文占2个字节,64位编译器中中文占3个字节;
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main() {
-
- char str[] = "123abc"; // 定义正常字符串"123456";
-
- int length = strlen(str); // 计算字符串长度;
-
- int size = sizeof(str); // 计算字符串所占字节数;
-
- printf("%s:\n", str); //输出字符串; 由于字符串中带"\0",后续的输出被中断,同样的道理如果字符串尾端没有带0,则会继续输出到下一个''\0"为止;
-
- printf("strlen = %d\n", length); //输出字符串长度;
-
- printf("sizeof = %d\n", size); // 输出字符串所占字节数
复制代码 输出结果:- 123abc:
- strlen = 6
- sizeof = 7
- 123:
- strlen = 3
- sizeof = 8
复制代码 PS:字符串中"\0"是非常重要且敏感的,所以不要忽略或多加,切记!!
|
|