- 我们来讲一讲:strcpy,strcat,strcmp它们的头文件都是<string.h>的内容,
- 首先,先讲一讲strcpy的使用和如何模拟实现strcpy,strcpy它的返回类型为:char* strcpy(char * destination, const char * source );是char*类型,亦是指针类型。
strcpy的使用,代码为:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "nihaoshijie";
char arr1[20] = " ";
strcpy(arr1, arr);//这个的意思就是:将arr中的值给arr1:
printf("%s\n", arr1);
return 0;
}
它所要实现的就是arr的值copy给arr1。则必须要包含的头文件是<string.h>.
模拟实现strcpy:它所要实现的内容,则必须要用到函数的知识,才能解决。先写出主函数,要包含创建一个函数,则代码为:
void my_str(char* dest,char* str)
{
while (*str != '\0')
{
//拷贝\0前面的内容
*dest = *str;
dest++;
str++;
}
*dest = *str;//拷贝\0
}
int main()
{
char arr[] = "nihaoshijie";
char arr1[20] = " ";
my_str(arr1, arr);//这个的意思就是:将arr中的值给arr1:
printf("%s\n", arr1);
return 0;
}
代码分析:这个代码中的my_str就是一个自定义函数,前面所说的strcpy的返回类型,贼这个代码中的void my_str(char* dest,char* str)就它的返回类型dest所对应的就是主函数中的arr,同理str就是所对应主函数的arr1。其实函数部分所对应的图可以理解成这样:它们就是一一对应的关系。
其实对于strcat与strcmp都是也一样的,在这里我们就不一一介绍了,就直接上代码,来的就简单。
strcat的使用:用来连接字符串 则代码为:
int main()
{
char ar[20] = "ni hao";
char ar1[] = "shi jie";
strcat(ar, ar1);//ar是目的地,ar1是追加的字符串
printf("%s\n", ar);
return 0;
}
模拟实现strcat的代码为:
#include<assert.h>
char* cat_str(char* dest,char* str)
{
assert(dest && str);//断言一下dest和str不是NULL,
//必须包含头文件为<assert.h>
char ret = dest;
while (dest != '\0')
dest++;
//拷贝
while (*dest++ = *str++)
return ret;
}
int main()
{
char ar[20] = "ni hao";
char ar1[] = "shi jie";
cat_str(ar, ar1);//ar是目的地,ar1是追加的字符串
printf("%s\n", ar);
return 0;
}
如果觉得char* dest,char* str不是很稳定,可以在char前加上const,这样就能固定dest和str的值。
strcmp的使用,用来两个字符串比较大小 则代码为:
//因为strcmp的返回类型是int,所以,它所打印的就是整形类型。
int main()
{
char arr1[] = "abcdef";
char arr2[] = "cdef";
int ret = strcmp(arr1, arr2);
printf("%d\n", ret);
return 0;
}
模拟实现strcmp,它的代码是:
int str_cmp(const char* str1,const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2;
}
if (*str1 > str2)
{
return 1;
}
else
{
return -1;
}
}
int main()
{
char arr1[] = "abcdef";
char arr2[] = "cdef";
int ret = str_cmp(arr1, arr2);
printf("%d\n", ret);
return 0;
}
这就是这三个字符串的函数,但是这个比较不稳定,如果想要三者都有限制,则需要strncpy,strncmp,strncat这三个带有限制的字符串函数,它们的返回类型,只需要在其()内加上size_t num(无符号数字即可)就可以,它的返回类型为:char * strncpy ( char * destination, const char * source, size_t num );其他的都是一样。