jun 发表于 2013-10-26 22:03:09

比较 strlen(str)和 sizeof(str)的不同

本帖最后由 jun 于 2013-10-26 22:04 编辑

#include <STDIO.H>
#include "string.h"

int main()
{
      int x = 0;
      char str ;
      // strlen()以'\0',作为结束标志,故strlen(str)不确定
      x = strlen(str);
      printf("strlen of str is: %d \n",x);
      x = sizeof(str);
      //而sizeof(str)==10
      printf("sizeof of str is: %d \n",x);

      char str2[] = "0123456789"; // 会自动添加一个结束符'\0'
      // strlen()以'\0',作为结束标志,故strlen(str2)==10
      x = strlen(str2);
      printf("strlen of str2 is: %d \n",x);
      x = sizeof(str2);
      //而sizeof()则会把'\0'也计算在内,sizeof(str2)==10
      printf("sizeof of str2 is: %d \n",x);
      return 0;
}
求交流,求指导{:5_91:}


牡丹花下死做鬼 发表于 2013-10-26 22:14:44

简而言之就是sizeof()是计算一个字符串的大小strlen()是计算一个字符串中字符的个数(不包括'\0')

jun 发表于 2013-10-27 17:33:42

牡丹花下死做鬼 发表于 2013-10-26 22:14 static/image/common/back.gif
简而言之就是sizeof()是计算一个字符串的大小strlen()是计算一个字符串中字符的个数(不包括'\0')

strlen()计算一个字符串中字符的个数(不包括'\0'),以‘\0’作为结尾标志而且不包括'\0',这个可以肯定,但是sizeof()是计算一个字符串的大小,还是有点疑问,如,开始char str,那么sizeof(str)==10,但是如果,你执行strcpy(str,"111122223333")后,依旧有sizeof(str)==10,
问题:sizeof()是以什么作为结束标志
页: [1]
查看完整版本: 比较 strlen(str)和 sizeof(str)的不同