strlen(求字符串长度)
字符串以 '\0' 作为结束标志,strlen函数的返回是在字符串中 '\0' 前面的出现的字符个数(不包括 '\0')。
参数指向的字符串必须要以 '\0' 结束,如果没有就会一直向后找,找到后才返回。
注意函数的返回值为size_t,是无符号的。
strcpy(字符串拷贝)
strcpy (字符数组1,字符数组2)
功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志 ‘\0’ 也一拷贝。字符数组2,也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。
源字符串必须以 '\0' 结束。
字符串拷贝函数会将源字符串中的 '\0' 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。
模拟实现:
strcat(字符串追加)
starcat (字符数组1,字符数组2)
功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的传结束标志 ‘0’.其返回值是字符数组1的首地址。
源字符串必须以 '\0' 结束。
目标空间必须足够大,能容纳下源字符串的内容。
目标空间必须可修改。
字符串不可自己给自己追加。
模拟实现:
strlwr函数和strupr函数 (大小写转换函数)
1、strwr(字符数组名) 将字符串中的字符传换成小写
2、strupr(字符数组名) 将字符串中的字符传换成大写
strcmp(字符串比较)
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字。
第一个字符串等一第二个字符串,则返回0.
第一个字符串小于第二个字符串,则返回小于0的数字。
模拟实现:
strstr(字符串查找)
若str1包含str2的全部元素,则返回str2在str1首次出现的地址;如果在str1中找不到str2,则返回NULL(空指针);
模拟实现:
#include <stdio.h>
#include <string.h>
char* my_strstr(char* p1,char* p2)
{
char* s1 = p1; //s1,s2作为使用指针,p1,p2用作存储起始位置.
char* s2 = p2;
char* cur = p1; //一直指向p1,记录两个字符串第一个相同元素的地址。
if(*p2 == '\0')
{
return NULL;
}
while(*cur) //如果cur地址指向'\0'则表示找不到相同字符串,退出循环。
{
s1 = cur;
s2 = p2;
while((*s1 != '\0') && (*s2 != '\0') && (*s1 == *s2)) //判断是否相同.
{
s1++;
s2++;
}
if(*s2 == '\0') //如果上面判断到最后,s2指向'\0',则表示找到相同字符串,返回cur
{
return cur;
}
cur++;
}
return NULL;
}
int main()
{
char arr1[] = "abcdefg";
char arr2[] = "def";
char* ret = my_strstr(arr1,arr2);
if(ret == NULL)
{
printf("没有!\n");
}
else
{
printf("%s\n",ret);
}
return 0;
}