1.首先分别介绍一下strcpy,strlen,strcat各自的功能:
1.strcpy
头文件 #include <string.h>
char *strcpy(char *dest, const char *src);
功能:实现字符串复制
参数:dest:目标字符串首地址
src:原字符串首地址
返回值:目标字符串首地址
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char s[32] = "nihaoshijie";
char ch[32] = "hello";
strcpy(s, ch);
printf("%s\n", s); // hello
return 0;
}
复制包括 \0
strncpy(strcpy的衍生)
char *strncpy(char *dest, const char *src, size_t n);
功能:实现字符串的复制
参数:dest:目标字符串首地址
src:原字符串首地址
n:字符个数
返回值:目标字符串首地址
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char s[32] = "nihao shijie";
char ch[32] = "hello";
strncpy(s, ch, 3);
printf("%s\n", s); // helao shijie
return 0;
}
2.strlen
#include <string.h>
size_t strlen(const char *s);
功能:计算字符串的实际长度
参数:s:字符串的首地址
返回值:实际长度
3.strcat
#include <string.h>
char *strcat(char *dest, const char *src);
功能:用于字符串拼接
参数:dest:目标字符串首地址
src:原字符串首地址
返回值:目标字符串首地址
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char s[32] = "nihao shijie";
char ch[32] = "hello";
strcat(s, ch);
printf("%s\n", s); // nihao shijiehello
return 0;
}
strncat
char *strncat(char *dest, const char *src, size_t n); 拼接src前n个字符
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char s[32] = "nihao shijie";
char ch[32] = "hello";
strncat(s, ch, 3);
printf("%s\n", s); // nihao shijiehel
return 0;
}
2.代码 封装函数实现功能
1.strcpy
#include <stdio.h>
void mystrcpy(char *s1, char *s2)
{
while (*s2 != '\0')
{
*s1 = *s2;//s1 s2互换;
s1++;
s2++;
}
*s1='\0';//此时s1已经指向s2的最末位,保证末位以后再无字符;当s2比s1长的时候没有垃圾字符
}
int main()
{
char a[32] = "nihao shijie";
char b[32] = "hello";
mystrcpy(a, b);
printf(" %s\n", a);
return 0;
}
2.strlen
#include <stdio.h>
#define N 100
int mystrlen()
{
char s[N] = {};
printf("请输入字符串: \n");
scanf("%s", s);
int i = 0;
int k = 0;
while (s[i] != '\0')
{
k++;
i++;
}
return k;
}
int main(int argc, char const *argv[])
{
printf("%d\n", mystrlen());
return 0;
}
3.strcat
#include <stdio.h>
void mystrcat(char *p, char *q)
{
while (*p != '\0')
{
p++;
}
while (*q != '\0')
{
*p++ = *q++;//将p的最后一个指针指向q的第一个地址
}
}
int main(int argc, char const *argv[])
{
char a[32] = "hello";
char b[32] = "world";
mystrcat(a, b);
puts(a);
return 0;
}