Sian 发表于 2014-3-4 15:20:07

sizeof()函数与strlen()函数计算字符串长度的区别

源代码:
/*
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 = 8PS:字符串中"\0"是非常重要且敏感的,所以不要忽略或多加,切记!!

Sian 发表于 2014-3-4 15:26:07

举一个简单的例子:
#include <stdio.h>
#include <stdlib.h>

int main() {
   
    char str[] = "123456";// 定义正常字符串"123456";
   
    str = '\0';// 将第4个字符改成"\0",观察其输出结果
   
    printf("%s\n", str);//输出字符串;
   
    system("pause");// 系统暂停;
   
    }

输出的结果为:123



页: [1]
查看完整版本: sizeof()函数与strlen()函数计算字符串长度的区别