在C语言库函数中有些许多好用的字符串函数,下面我们一起来熟悉一下他们吧。(在使用时要包string.h头文件)
一、strlen函数
strlen函数的参数是一个字符指针,返回值是一个无符号整数。用法是把字符串的首元素的地址传进去,就会返回这个字符串的长度。
函数作用:求一个字符串的长度
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[] = "abcd";
printf("%d\n", strlen(str));
return 0;
}
运行结果:
自己模拟实现:
int my_strlen(char* s)
{
int count = 0;
while (*s)
{
count++;
++s;
}
return count;
}
二、strcpy函数
strcpy函数的作用是拷贝字符串,它会把source中的字符串拷贝到destination中,并返回destination的首元素地址(要确保destination的空间够大)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char dst[] = "abcd";
char src[] = "efgh";
strcpy(dst, src);
printf("%s\n", dst);
return 0;
}
运行结果 :
dst字符串变成了"efgh"
自己模拟实现:
char* my_strcpy(char* dst, const char* src)
{
char* ret = dst;
while (*dst++ = *src++)
{
;
}
return dst;
}
三、strcat函数
strcat函数的作用是在destination字符串后面追加source字符串,并返回destination字符串首元素的地址。(要确保destination字符串的空间够大)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
char dst[20] = "abcd";
char src[] = "efgh";
strcat(dst, src);
printf("%s\n", dst);
return 0;
}
运行结果:
dst字符串变成了abcdefgh
自己模拟实现:
char* my_strcat(char* dst, const char* src)
{
int n = strlen(dst);
while (*src)
{
dst[n++] = *src++;
}
return dst;
}
四、strcmp函数
strcmp是字符串比较函数,它是依次比较两个字符串的字符的ascll码值,一旦有一个字符不相等就给出结果,str1大返回大于0的数,str2大返回小于0的数,相等则返回0。
例如:"abcd" 和 "abd" 比较,"abd"大 "abcd" 和 "abc" 比较,"abcd"大
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char dst[20] = "abcd";
char src[] = "abce";
printf("%d\n", strcmp(dst, src));
return 0;
}
运行结果:
模拟实现:
int my_strcmp(const char* str1, const char* str2)
{
while (*str1 || *str2)
{
if (*str1 > *str2)
return 1;
else if (*str1 < *str2)
return -1;
else
{
str1++; str2++;
}
}
return 0;
}
五、strstr函数
函数作用是判断str2是否在str1内,在就返回str1内与str2相同的字串的首元素地址,不在就返回NULL 。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str1[20] = "abcdefg";
char str2[] = "cde";
printf("%s\n", strstr(str1, str2));
return 0;
}
运行结果:
模拟实现:
char* my_strstr(char* str1, char* str2)
{
int len2 = strlen(str2);
int begin1 = 0, begin2 = 0;
while (*(str1 + begin1))
{
if (str1[begin1] == str2[begin2])
{
int cur1 = begin1 + 1;
int cur2 = begin2 + 1;
while (cur2 < len2)
{
if (str1[cur1] != str2[cur2])
break;
cur1++;
cur2++;
if (cur2 == len2)
return str1 + begin1;
}
}
begin1++;
}
return NULL;
}
第一部分结束了,感谢大家。