《代码大全》- 12.4 字符和字符串
来源:互联网 发布:数据分析师培训多少钱 编辑:程序博客网 时间:2024/05/22 08:03
C语言中的字符串
避免常见错误的几种方法:
1. 把C风格的字符串的长度声明为CONSTANT+1
在C/C++中很容易忘记长度为n的字符串需要n+1字节的存储空间,从而忘记为结束符'\0'预留空间。
避免这种错误的方法是把字符串的长度声明为CONSTANT+1,然后在余下的代码里用CONSTANT在只带字符串的长度。
例如:
char name[CONSTANT+1] = {0};
for(i = 0; i < CONSTANT; i++)
name[i] = 'A';
strncpy( name, some_other_name, NAME_LEN);
2.用null初始化字符串以避免没有终端的字符串
C通过查找空结束符来判断字符串的末尾。不管你认为字符串有多长,只要C没有找到'\0',它就认为字符串还没有结束。如果你忘记在字符串的最后放置一个'\0',字符串操作的结果可能就会与你预想的不一样。
有两种方法来避免无终端字符串:
(1)在声明字符数组的时候把它初始化为0;
(2)在动态分配字符串时,使用calloc()而不是malloc()来把它初始化为0。calloc()会负责分配内存,并把它初始化为0。malloc()只分配内存,不执行初始化。
3.用字符数组取代C中的指针
如果内存不是限制性的因素,那么就把你所有的字符串变量都声明为字符数组。这样有助于避免指针错误,并且在出错的时候,编译器会给你更多的警告。
4.用strncpy()取代strcpy()以避免无终端字符串
C中的字符串函数既有安全版本,也有危险版本。较危险的函数如strcpy(),strcmp(),它们会一直运行下去,知道它们遇到一个空结束符位置。安全版本strncpy(),strncmp()会接受一个表示最大长度的参数,因此一旦处理到此参数长度位置,即使字符串会一直延续下去,你的函数调用也会即使返回。
- 《代码大全》- 12.4 字符和字符串
- HTML字符实体和转义字符串大全
- 字符串字符分割代码
- HTML特殊字符代码大全
- 针对字符和字符串是否可以修改. 详解,附代码
- Java String字符串和Unicode字符相互转换代码
- 从代码理解字符串和字符的关系
- 字符串和字符
- 字符数组和字符串
- 字符数组和字符串
- 字符数组和字符串
- 字符数组和字符串
- Lisp.字符串和字符
- 字符和字符串
- 字符和字符串
- 字符串和字符函数
- 字符和字符串处理
- 字符串,字符和字节
- c语言scanf缓冲区问题
- CIO如何面对热点趋势
- 在TreeView节点上点击右键触发选中该节点的方法
- Cocos2d-x跨Android&iOS平台开发入门
- 使用U盘PE安装系统,显示安装程序无法重新启动计算机,请关闭所有应用程序并且关机,以便继续进行XP安装。找不到网络路径。的解决方法
- 《代码大全》- 12.4 字符和字符串
- mysql 删除数据库表中重复记录
- 每天学习一点点
- MFC工具栏介绍(二)之CReBar
- 2012-10-23 学习所获
- sqlite3中的数据类型
- CIO如何获得更高的席位?
- 关于Flex里面的对象或者ArrayCollection等数组的深度复制问题
- 分享一个霸气的Email正则