一.strlen函数--size_t strlen ( const char * str )
求字符串长度
注意函数的返回值是无符号的size_t的类型,用来作比较的话相减的会是一个无符号的值(一定是正的)(易错)
strlen函数的实现(计算法)
二.strcpy函数--char* strcpy(char * destination, const char * source)
拷贝字符串内容到另外一个字符串
源字符串必须以 '\0' 结束。
会将源字符串中的 '\0' 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。(不能是常量字符串,如char* arr1 = “abcdfg”)
strcpy函数实现:
三.strcat函数--char * strcat ( char * destination, const char * source )
追加字符串(将一个字符串加到另一个字符串里面)
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
字符串自己给自己追加,如何?
答案:
strcat的实现:
1.找到源字符串的/0的位置。
2.再把源字符串拷贝发到目标空间(找到目标空间的/0)
四.strcmp函数--int strcmp ( const char * str1, const char * str2 );
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
注意:strcmp函数比较的不是字符串的长度!而是比较字符串中对应字符的大小,如果相同,就比较下一对,直到不同或者都遇到\0。
strcmp函数的实现:
以上函数是长度不受限制的函数(可能有越界,造成程序崩溃的风险),接下来是长度限制函数(就是以上函数的限制版):
一.strncpy函数--char *strncpy( char *strDest, const char *strSource, size_t count );
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
二.strncat函数--char *strncat( char *strDest, const char *strSource, size_t count );
注意:其实将源字符串追加过去的时候是多增加了一个\0的
三.strncmp函数--int strncmp( const char *string1, const char *string2, size_t count );
比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完
当比较出大小时,就不再往后面比较
几个有趣的函数:
一.strstr函数--char *strstr( const char *string, const char *strCharSet );
在源字符串里面找它的子字符串,找到并返回目标开始的地址
strstr函数的实现: