标签:不能 string type 大于 指针 长度 返回 pre 比较
strlen 这个函数是在 string.h 的头文件中定义的 它的函数原型是 size_t strlen( const char ); size_t 是一个无符号整型,是这样定义的 typedef unsigned int size_t; 既然它返回的不是整型数,那么如果你想直接对他的表达式进行操作,那么肯定就会存在一些问题,如下:
if( strlen(str1) - strlen(str2) >=0 )
这个判断语句将永远都是真的,因为左侧的是无符号数,那个不可能比零小,所以这样做就和你的预期想法完全不同了。所以对 strlen 的返还值进行强制转换为 int 类型就不用担心这种问题的出现。
strcpy 这个函数是 string.h 的头文件中定义的 它的函数原型是 char * strcpy( char *dst, char const *src); 函数的功能是把 src 字符串复制到 dst ,如果两参数在内存中出现重叠,那么结果是未定义的。因为 dst 将被修改所以他不可以是字符串常量,这个函数有一个返还值,这个返还值其实就是操作后的字符串指针的一个复制。同时在使用这个函数的时候有一个问题是必须要注意的,保证目标字符数组的空间一定要足以容纳需要复制的字符串,如果使用者不能保证这个问题,那么数组后的内存空间将被覆盖,这样引起的危害是不可估量的。
strcat 这个函数是 string.h 的头文件中定义的 它的函数原型是 char * strcat( char * dst, char const *src ); 函数的功能是把 src 字符串添加在 dst 原有字符串的后面,去掉原有的 ‘\0‘ 将字符串添加到后面并加上一个 ‘\0‘ 。和上一个函数一样都需要注意的要确保目标字符数组有足够的空间,返还值也是操作后的字符串的指针。
strcmp 这个函数是 string.h 的头文件中定义的 它的函数原型是 int strcmp (char const *s1, char const *s2 ); 函数的功能是 将两个字符串的字符逐一比较,直到发现不匹配为止,那个优先不匹配的较“小”,这种比较叫做字典比较。如果 s1 小于 s2 返回一个小于零的值,如果 s1 大于 s2 ,返回一个大于零的值,如果两个参数相等返回零。
那么既然这种函数在操作的时候需要考虑到字符数组能否存储下的问题,那个就有了相应的可以限制长度的函数。
strncpy strncat strncmp
这是三个函数的原型是
char * strncpy( char *dst, char const *src, size_t len );
char * strncat ( char *dst ,char const *src ,size_t len);
int strncmp(char const *s1, char const *s2, size_t len;
这些函数都在原来的基础上加了一个参数,就是要操作字符串的长度。strncpy 函数从 src 字符串中复制 len 个字符到 dst 中,如果不足就用NUL补充,strncat 函数从 src 中复制 len 个字符到 dst 的后面,最后并加上一个NUL。
strncmp 就是只比较 len 个字符。
标签:不能 string type 大于 指针 长度 返回 pre 比较
原文地址:http://www.cnblogs.com/foreverW/p/7259375.html