null

在使用处理C风格字符串的标准库函数时,牢记字符串必须以结束符null结束。

char ca[]  =  { 'C' ,'+' , '+' };      cout  << strlen(ca)  <<endl;     //ca中没有null结束符,计算结果不可预料

对没有null结束符的字符数组,则strlen计算的结果不可预料。

标准库函数strlen总是假定其参数字符串以null字符结束,当调用该标准库函数,系统将会从实参指向的内存空间开始一直搜索结束符,直到恰好遇到null为止。strlen返回这一段内存空间中总共有多少个字符,无论如何这个数值不可能时正确的。


传递给标准库函数strcat ,strcpy的第一个实参数组必须具有足够大的空间存放新生成的字符串。

如果第二个字符串大小发生变化,程序容易出错,导致严重的安全漏洞。

如果必须使用C风格字符串,则使用标准库函数strncat 和strncpy比strcat和 strcpy函数更安全。

在复制和串连字符串时,一定要时刻记住算上结束符null,在定义字符串时要切记预留存放null字符的空间。

标准库函数strlen用于计算C风格字符串中的字符个数,不包括null结束符。

如果使用C++标准库类型string,则不存在数组溢出和截短字符串,标准库则处理所有的内存管理问题。不必担心每次修改字符串时设计到的大小问题。除增强安全性外,效率也提高了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值