目录
strlen函数,strcpy函数,strcat函数,strcmp函数,strtok函数,strstr函数
strlen函数,strcpy函数,strcat函数,strcmp函数,strtok函数,strstr函数
1.strlen()函数
strlen函数返回的是在字符串中’\0’前面的字符个数
头文件是#include<stdio.h>
模拟实现strlen函数
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int my_strlen(char* str)
{
int count = 0;
while (*str)
{
str++;
count++;
}
return count;
}
int main()
{
char arr[10] = "12345";
int as = my_strlen(arr);
cout << as;
}
2.字符串函数strcpy
strcpy是覆盖拷贝,将s数组全覆盖拷贝到s1数组,会把’\0’也拷过去,且必须考虑s1数组的空间够不够
模拟实现strcpy
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
char* my_strcpy(char* dest, char* str)
{
char* set = dest;
while (1)
{
*dest = *str;
dest++;
str++;
if (*str == '\0')
{
return set;
}
}
}
int main()
{
char s[10] = "sdaewe";
char s1[10] = "abc";
my_strcpy(s1, s);
cout << s1;
return 0;
}
3.字符串函数strcat
strcat追加拷贝,追加到目标空间后面,目标空间必须足够大,能容纳下源字符串的内容
就是将s数组中内容追加到s1数组中,但必须保证s1数组空间足够大。
模拟实现strcat
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
char* my_strcat(char* dest, char* str)
{
char* set = dest;
while(*dest)
{
dest++;
}
while (1)
{
*dest = *str;
dest++;
str++;
if (*str == '\0')
{
return set;
}
}
}
int main()
{
char s[10] = "abc";
char s1[10] = "abc";
my_strcat(s1, s);
cout << s1;
}
4.字符串函数strcmp
strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
模拟实现strcmp
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int my_strcmp(const char* dest, const char* scr)
{
//逐个元素比较
while (*dest && *scr)
{
if (*dest > *scr)
{
return 1;
}
else if (*dest < *scr)
{
return -1;
}
else //如果两个元素相等,进入下一个继续比较
{
++dest;
++scr;
}
}
//str2比较完了,str1还有
if (*dest)
{
return 1;
}
//str1比较完了,str2还有
else if (*scr)
{
return -1;
}
//str1等于str2
else
{
return 0;
}
}
int main()
{
char s[10] = "abcd";
char s1[10] = "acd";
cout<< my_strcmp(s, s1);
return 0;
}
5.字符串函数strtok
strtok的使用
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char s[] = "iudqwekaej@wdlqkj*alskjd!jwq";
char as[100]= "iudqwekaej@wdlqkj*alskjd!jwq";
const char* sep = "@*!";
char * aq=strtok(as, sep);
while (aq)
{
cout << aq << '\n';
aq = strtok(NULL, sep);
}
return 0;
}
6.字符串函数strstr
找子串并返回第一个字串的首地址
模拟实现strstr