函数头文件string.h
①strlen()函数
此函数用于统计字符串的长度,不包括字符串结束字符’\0’。
如果字符个数和字符串大小相等,strlen()函数就无法返回确定值,例如:
char atr[5] = “abcde”;strlen()会一直往下检索,直到遇见’\0’,在遇到’\0’之前的区域是不确定的。
函数实现如下:
int strlen(const char *str)
{
int count = 0;
assert(str != NULL);
while(*str++ != '\0')
{
count++;
}
return count;
}
②strcpy()函数
用于拷贝字符串。
函数实现如下:
char * strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ )
; /* Copy src over dst */
return( dst );
}
将src指向的字符串拷贝至dst指向的数组中,返回dst的值即一个字符的地址。
此函数还有一个有用的属性:第1个参数不必指向数组的开始,可以实现拷贝数据的一部分。
例如:
int main()
{
char str2[20] = "boy";
char str1[20] = "hello world";
strcpy(str1 + 6,str2);
puts(str1);
return 0;
}
该程序的输出为:hello boy
③strcmp()函数
用于字符串的比较。
函数实现如下:
int strcmp (const char * src,const char * dst)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
如果两个字符串相同,函数返回0。如果前者大于后者,返回大于0的值。前者小于后者,则返回小于0的值。
④strcat()函数
用于拼接字符串。
函数实现如下:
char * strcat (char * dst,const char * src)
{
char * cp = dst;
while( *cp )
cp++; /* find end of dst */
while( *cp++ = *src++ ) ; /* Copy src to end of dst */
return( dst ); /* return dst */
}
函数接受两个字符串为参数,把第2个字符串的备份附加在第1个字符串的末尾,并把拼接形成的新字符串作为第1个字符串。
strcat()函数的类型是char * 。即返回拼接完成后第1个字符串的地址。
⑤strstr()函数
函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
函数实现如下:
char * strstr (const char * str1,const char * str2)
{
char *cp = (char *) str1;
char *s1, *s2;
if ( !*str2 )
return((char *)str1);
while (*cp)
{
s1 = cp;
s2 = (char *) str2;
while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}