目录
1.功能:把一个字符串中的内容拷贝到另一个字符串中。如以下示例:
4.Strncpy代替Strcpy:Strncpy和Strcpy功能相同,但是其参数多了一个num,表示复制arr中几个字符的长度。
b.strcat(brr,arr),把arr中的内容追加到brr中。
1.功能:比较两个字符串大小,字符串比较大小比的是字符的ASCII编码的大小。
b.int ret=strcmp(brr,arr),strcmp返回类型是整数,>0 <0 =0,这三种可能。
一.Strcpy
1.功能:把一个字符串中的内容拷贝到另一个字符串中。如以下示例:
#include <string.h>
int main()
{
char arr[] = { "You will success" };
char brr[30] = { 0 };
printf("%s", strcpy(brr, arr));
return 0;
}
2.用法:
a.头文件string.h
b.strcpy(str1,str2),str2是被复制的字符数组数组名,str1是复制str1字符数组的数组名。
3.模拟实现:
a.返回类型是字符指针,参数也是字符指针,destination(目的地),source(来源,源头)。
#include <string.h>
#include <assert.h>
char* my_strcpy(char* desnation, const char* source)
{
assert(*source);
//标记desnation的起始位置
char* mark = desnation;
while (*source != '\0')
{
*desnation = *source;
desnation++;
source++;
//也可以直接写成,*desnation++=*source++
}
return mark;
}
int main()
{
char arr[] = { "You will success" };
char brr[30] = { 0 };
printf("%s", my_strcpy(brr, arr));
return 0;
}
但是如果字符数组里面的内容过多,而brr只能存放30个字符,则会导致程序崩溃,因此是不安全的。
所以我们可以选择Strncpy代替Strcpy
4.Strncpy代替Strcpy:Strncpy和Strcpy功能相同,但是其参数多了一个num,表示复制arr中几个字符的长度。
模拟实现:
#include <string.h>
#include <assert.h>//size_t 无符号类型
char* my_strncpy( char* desnation, const char* source,size_t size)
{
assert(*source);
//assert(*desnation);
char* mark = desnation;
while (size)
{
*desnation++ = *source++;
size--;
//desnation++;
//source++;
}
return mark;}
int main()
{
char arr[] = { "You will success" };
char brr[30] = { 0 };
int size = 0;
size = 3;
printf("%s", my_strncpy(brr, arr,size));
return 0;
}
一些知识点
1.*desnation和desnation区别
* + 指针变量名