字符操作注意事项

1,字符长度
       #include <string.h>

       size_t strlen(const char *s);

DESCRIPTION
       The strlen() function calculates the length of the string s, excluding the terminating null byte ('\0').

从上面描述来看,字符长度是不包括结束符号的,比如:

int main(int argc,char *argv[])
{
  char testStr[20] = "abcdef";

 printf("testStr len:%d\n",strlen(testStr));

}

运行结果:testStr len:6

所以在内存上操作上的长度必须预留或增加一个结束符;比如

char *p_strbuf = malloc(strlen(testStr) +1);

memcpy(p_strbuf ,testStr,strlen(testStr));

p_strbuf [strlen(testStr) ] = '\0';或者memcpy前,memset(p_strbuf ,0,strlen(testStr) +1);

不预留的隐形风险:p_strbuf 字符长度异常或,strcpy越界;strncpy需要回填结束符或长度+1;

2,指针累计括号等价,并不因为加了括号后运行步骤增加。

char *p_start = testStr;

char *p_tmp = p_start;
printf("*(p_start++):%d\n",*(p_start++));
printf("*p_tmp++:%d\n",*p_tmp++);

运行结果都是97;

char *p_start = testStr;

char *p_tmp = p_start;
printf("*(++p_start):%d\n",*(++p_start));
printf("*++p_tmp:%d\n",*++p_tmp);

运行结果都是98;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值