🎉前言🎉
这篇博客我们来介绍下字符串函数的使用,可能对字符串函数的使用大多人刚开始学习会学习了一段时间只是知道几种字符串函数的使用 像 strlen()、strcpy()、strcat()、strcmp()、这四种字符串库函数的使用。而字符串函数绝对不仅仅只有这四种库函数,实际上字符串函数可以说是"五花八门"了,在这篇博客当中我就会详细介绍字符串函数的各种使用。
在使用C语言的字符串库函数的时候记得要添加相应的头文件#include<string.h>
🎄strcpy() - 复制字符串🎄
strcpy() 函数的声明方式如下 👇
char *strcpy(char *dest, const char *src)
把 src 所指向的字符串复制到 dest。
需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。所以,dest 一定要足够大,这样才能被 src 给存放的下去。
dest→ 指向用于存储复制内容的目标数组。
src→ 要复制的字符串。
该函数返回一个指向最终的目标字符串 dest 的指针。
strcpy()在原来字符要保证拥有 src 存在字符的空间大小也就是下标。
注意:这里的返回值的指针类型可以是void *也可以是char *的类型。
🎄strcpy()函数代码示例🎄
使用 strcpy() 函数代码示例如下 👇
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]="C语言";
char str2[40];
char str3[40];
strcpy (str2,str1);
strcpy (str3,"C++语言");
printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
return 0;
}
运行结果如下 👇
str1: C语言
str2: C语言
str3: C++语言
当然我们还要注意:char str[ ] = {'a','b','c'};如果你是想这样子进行存放的话依旧还是不行的原因很简单'\0',示例代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = { 'a', 'b', 'c' };
char str2[40];
strcpy(str2, str1);
printf("%s", str2);
return 0;
}
运行结果如下 👇
就会是这个样子具有随机值后面,因为我们不清楚'\0'到底在哪里。
当然如果是这样char str1[] = { 'a', 'b', 'c','\0'};就不会因为我们在最后一个元素添加了'\0'。
🎄创建自定义函数实现strcpy()的功能🎄
示例代码如下:👇
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <assert.h>
void My_strcpy(char *dest, const char *src)
{
assert(dest != NULL);
assert(src != NULL);
while (*src != '\0')
{
*dest = *src;//进行赋值
*src++;
*dest++;//指向下一个字符
}
}
int main(void)
{
char *p = "C语言";
char str[20] = { 0 };
My_strcpy(str, p);
printf("str = %s\n",str);
return 0;
}
运行结果如下 👇
str = C语言