一.strlen(求字符串长度)
函数声明如下:
int strlen( const char* str) ;
函数参数为一个指向字符串的指针,返回值为一个int型。
strlen函数是求一个字符串的长度,当在字符串中遇到‘\0’时,则会返回前面字符的个数。
1.使用实例
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "abcdef";//定义一个字符串
int ret = strlen(arr);//用strlen求arr的长度,并把返回值给ret
printf("%d", ret);//输出ret,为6
return 0;
}
①.模拟实现
#include<stdio.h>
#include<string.h>
int my_strlen(const char* str)
{
int count = 0;//用一个数记录
while (*str)//当str指向的字符不为0是,则进入while
{
count++;//计数++
str++;//指针后移
}
return count;//返回记录的数
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d", ret);
return 0;
}
二.strcpy(字符串拷贝)
函数声明如下:
char* strcpy ( char* destination , const char* source) ;
函数参数为一个指向拷贝目的地的指针,一个指向拷贝源头的指针,返回值为指向目的地(destination)的指针.
strcpy函数是将一个字符串拷贝到另外一个字符串中,当在源头字符串遇到'\0',则拷贝结束。
1.使用实例
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "abcdef";
char arr2[10] = { 0 };
strcpy(arr2, arr);
printf(arr2);//输出为“abcdef”
return 0;
}
①模拟实现
#include<stdio.h>
#include<string.h>
char* my_strcpy(char* dest, const char* sour)
{
char* ret = dest;//用ret指针保存dest指针的起始地址
while (*sour)//如果sour指针不为0,则进入while
{
*dest = *sour;//把sour指针指向的字符给到dest指针指向的空间
dest++;//dest指针后移
sour++;//sour指针后移
}
return ret;//返回dest的起始地址
}
int main()
{
char arr[] = "abcdef";
char arr2[10] = { 0 };
my_strcpy(arr2, arr);
printf(arr2);//输出为“abcdef”
return 0;
}
三.strcat(字符串追加)
函数声明如下:
char* strcat ( char* destination , const char* source) ;
函数参数为一个指向追加目的地的指针,一个指针追加源头的指针,返回值为追加目的地的起始地址。
strcat函数是将一个字符追加到另一个字符串的末尾(注意目的地字符串要有足够的空间)。
1.使用实例
#include<stdio.h>
#include<string.h>
int main()
{
char arr[10] = "abc";
strcat(arr, "def");
printf(arr);//输入为abcdef
return 0;
}
③.模拟实现
#include<stdio.h>
#include<string.h>
char* my_strcat(char* dest, const char* sour)
{
char* ret = dest;//用ret保存dest的起始地址
int count = strlen(sour);//求要追加字符串的长度
while (*dest)//当dest指针指向的字符不为0时,则进入while
{
dest++;
}//while结束后,dest指向‘c’后面的空间
while (count)//循环count次
{
*dest = *sour;//把sour指向的字符给dest
dest++;//dest指针后移
sour++;//sour指针后移
count--;
}
return ret;//放回dest的起始位置
}
int main()
{
char arr[10] = "abc";
my_strcat(arr, arr);
printf(arr);//输入为abcdef
return 0;
}
四.strcmp(字符串比较)
函数声明如下:
int strcmp ( const char* str1 , const char* str2) ;
函数参数为一个指向字符串的指针,另一个也为指向字符串的指针。
strcmp函数时用来比较两个字符串的,当str1大于str2时,则返回1,否则返回-1,若str1等于str2,则返回0。
1.使用实例
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = "abd";
int ret = strcmp(arr1, arr2);//arr1小于arr2,所以返回-1给ret
printf("%d\n", ret);//输出为-1
ret = strcmp(arr1, arr1);//arr1等于arr1,所以返回0给ret
printf("%d\n", ret);//输出为0
ret = strcmp(arr2, arr1);//arr2大于arr1,所以返回1给ret
printf("%d\n", ret);//输出为1
return 0;
}
①模拟实现
#include<stdio.h>
#include<string.h>
int my_strcmp(const char* str1, const char* str2)
{
while ((*str1) == (*str2))//当str1指向的字符和str2指向的字符相等,则进入while
{
if ((*str1) == 0)//如果str1指向的字符等于0,即str1和str2指向的字符都为0,即它们相同
{
return 0;//则返回0
}
str1++;//str1后移
str2++;//str2后移
}
if ((*str1) > (*str2))
return 1;//如果str1指向的字符大于str2,则返回1
else
return -1;
}
int main()
{
char arr1[] = "abcd";
char arr2[] = "abc";
int ret = my_strcmp(arr1, arr2);//arr1小于arr2,所以返回-1给ret
printf("%d\n", ret);//输出为-1
ret = my_strcmp(arr1, arr1);//arr1等于arr1,所以返回0给ret
printf("%d\n", ret);//输出为0
ret = my_strcmp(arr2, arr1);//arr2大于arr1,所以返回1给ret
printf("%d\n", ret);//输出为1
return 0;
}