函数源码实现:
char *strcpy(char *dest, const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0');
return tmp;
}
功能:把 src所指向的字符串复制到 dest
参数:
返回值:返回指向目标字符串的首地址(指针)
注意事项:如果目标字符串dest长度小于源字符串src的长度,可能会造成缓冲区溢出
函数源码实现:
char *strncpy(char *dest, const char *src, size_t n)
{
char *tmp = dest;
while (n) {
if ((*tmp = *src) != 0)
src++;
tmp++;
n--;
}
return dest;
}
功能:把 src所指向的字符串复制n个字符到目标字符串 dest
参数:
返回值:返回指向目标字符串的首地址(指针)
注意事项:
函数源码实现:
size_t strlen(const char *str)
{
const char *sc;
for (sc = str; *sc != '\0'; sc++);
return sc - str;
}
功能:计算字符串str的长度,结果不包含字符串结束符’\0’
参数:
返回值:返回该字符串的长度(不包含结束符)
函数源码实现:
char *strcat(char *dest, const char *src)
{
char *tmp = dest;
/* 找到目标字符串的结尾 */
while (*dest)
dest++;
/* 追加 */
while ((*dest++ = *src++) != '\0');
return tmp;
}
功能:将一个 ‘\0’ 终止的字符串src追加到另一个字符串dest的结尾处,其中src字符串的结束符’\0’也会追加上去
参数:
返回值:返回指向目标字符串的首地址(指针)
注意事项:
函数源码实现:
char *strncat(char *dest, const char *src, size_t n)
{
char *tmp = dest;
if (n) {
/* 找到目标字符串结尾 */
while (*dest)
dest++;
/* 从src字符串中追加n个字符到dest中 */
while ((*dest++ = *src++) != 0) {
/* n减小到等于0时,提前结束循环 */
if (--n == 0) {
*dest = '\0';
break;
}
}
}
return tmp;
}
功能:将src中开头的n个字符追加到dest的结尾。如果n大于src的长度,那么只会将src的所有字符追加到dest的尾部
参数:
返回值:返回指向目标字符串的首地址(指针)
注意事项:
函数源码实现:
int strcmp(const char *str1, const char *str2)
{
while (1) {
if (*str1 != *str2)
return (*str1 - *str2);
if (!*str1)
break;
str1++;
str2++;
}
return 0;
}
功能:str1和str2两个字符串进行比较。
参数:
返回值:
注意事项:
strncmp函数和strcmp函数用法是一样的,只不过strncmp函数指定了比较的最大字符数。
函数源码实现:
int strncmp(const char *str1, const char *str2, size_t n)
{
while (n) {
if (*str1 != *str2)
return (*str1 - *str2);
if (!*str1)
break;
str1++;
str2++;
n--;
}
return 0;
}
功能:str1和str2两个字符串进行比较,最多比较前n个字符。比较过程中,如果任何一个字符串的长度小于n,那么只会比较较短的字符串的长度。
参数:
返回值:
函数源码实现:
char *strchr(const char *str, int c)
{
for (; *str != (char)c; str++)
{
if (*str == '\0')
return NULL;
}
return (char *)str;
}
功能:在字符串str中查找字符c首次出现的位置
参数:
返回值:
函数源码实现:
char *strrchr(const char *str, int c)
{
const char *last = NULL;
do {
if (*str == (char)c)
last = str;
} while (*str++);
return (char *)last;
}
功能:在字符串str中查找字符c最后一次出现的位置(或者说反向查找字符串str第一次出现字符c的位置)
参数:
返回值:
函数源码实现:
char *strstr(const char *haystack, const char *needle)
{
size_t l1, l2;
l2 = strlen(needle);
if (!l2)
return (char *)haystack;
l1 = strlen(haystack);
while (l1 >= l2) {
l1--;
if (!memcmp(haystack, needle, l2))
return (char *)haystack;
haystack++;
}
return NULL;
}
功能:在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。比如在字符串"aaabcd123gggab123abcd"中查找"123"这个字符串,那么返回的就是"123"这个字符串,在字符串"aaabcd123gggab123abcd"中首次出现的位置(地址)。
参数:
返回值:
函数源码实现:
char *strpbrk(const char *str1, const char *str2)
{
const char *sc1, *sc2;
for (sc1 = str1; *sc1 != '\0'; sc1++) {
for (sc2 = str2; *sc2 != '\0'; sc2++) {
if (*sc1 == *sc2)
return (char *)sc1;
}
}
return NULL;
}
功能:搜索字符串str1中,第一个匹配字符串str2中的字符,然后返回该字符所在的位置,不包含字符串结束符。
参数:
返回值:
函数源码实现:
char *strreplace(char *str, char old, char new)
{
char *tmp = str;
for (; *tmp; tmp++)
if (*tmp == old)
*tmp = new;
return str;
}
功能:使用新的字符new替换字符串中所有出现的old字符
参数:
返回值:返回传递进的str字符串的首地址