字符串,字符和字节
1.c语言没有显式的字符串数据类型,字符串常量适用于程序不会对其进行修改的字符串(char *str),所有其他字符串都必须存储于字符数组或动态分配的内存中。
2.有效的字符串必须是以NUL字节结尾的(‘\0’),否则在用标准库的文件处理时就会出现一些不可预见的情况。标准库函数的原型处于string.h中。
3.strlen返回的无符号数,所以用它的返回值比较大小时要注意
if(strlen(x)-strlen(y)>0)
这个结论是永远成立的,因为无符号数的运算结果永远不会小于0
4.在进行strcpy或者strcat操作时,应保证目标字符数组的空间足以容纳要复制的字符串,否则多余的字符将会覆盖数组后面内存空间的值,导致情况的发生。当使用有len限制的strcpy或者strcat函数时,对于前者,如果源串的长度比len大,那么结果仍然不会以nul字节结尾,而后者则总是在结果字符串后面添加一个NUL字符。
5.内存操作
memcpy //复制
memmove //可重叠的复制
memcmp //两段内存内容的比较,以字节为单位
menchr //在内存中查找字符第一次出现的位置
memset //将内存中指定的一段长度都设置为某个字节的值
mem***函数提供了类似字符串函数的能力,但是它们可以处理包括NUL字节在内的任意字节。
memmove与memcpy的不同是,它的操作不是直接的复制,而是现将源复制到一个临时的位置,然后再将临时位置的内容复制到目标位置,这样就可以进行重叠的复制操作,比如memmove(x,x+1,...)
阅读(711) | 评论(0) | 转发(0) |