学科分类
目录
C语言

字符串复制函数

大家在操作计算机时总会用到复制功能将一些数据复制到另一个地方,在C语言程序中也经常会遇到字符串复制,为此C语言提供了strcpy()函数用于实现字符串复制功能。

strcpy()函数的声明如下:

char *strcpy(char *dest, const char *src);

在上述函数声明中,strcpy()函数接受两个参数,其功能是把从src地址开始且含有‘\0’结束符的字符串复制到以dest开始的地址空间,返回指向dest的指针。需要注意的是,src和dest所指内存区域不可以重叠且dest必须有足够的空间容纳src的字符串。

strcpy()函数用法示例如下所示:

char arr[15] = "hello,China";
char *p = "ABCD";
strcpy(arr,p);

上述代码,定义了一个字符数组arr和一个字符指针p,其中,arr数组的大小为20,其中存储的字符串为“hello,China”,指针p指向的字符串为“ABCD”。使用strcpy()函数将指针p指向的字符串复制到数组arr中,arr表示数组的首地址,因此字符串“ABCD”从数组开头处开始复制,它会覆盖掉数组中原有的元素,复制完成之后,以%s格式化输出数组arr,其值为“ABCD”。

需要注意的是,在复制时,字符串“ABCD”只是覆盖了数组arr前5个元素,而后面的元素还会存在arr中,其复制过程如图1所示。

图1 字符串复制过程

由图1可知,复制完成之后,数组arr的元素是包含字符串“ABCD\0,China”,当以%s格式化输出arr时,遇到“ABCD”末尾的‘\0’就结束,因此只输出了字符串“ABCD”,如果以索引法读取arr数组,则可以访问到后面的元素,示例代码如下:

arr[6];    //第7个元素,值为C
arr[7];    //第8个元素,值为h

image-20200521130848998多学一招:数字与字符串转换函数

1、atoi()函数

atoi()函数用于将一个数字字符串转换为对应的十进制数,atoi()函数的声明如下:

int atoi(const char *str);

在上述函数声明中,参数str用于接收记录数字的字符串,若函数调用成功,将返回转换后的十进制整数;否则返回0。需要注意的是,atoi()的声明位于stdlib.h文件中,因此需要使用#include指令引用头文件stdlib.h。

atoi()函数的用法如下所示:

int num1 = atoi("123");  //将字符串"123"转换为十进制数据123
int num2 = atoi("abc");  //"abc"不是数字字符串,转换失败

上述代码中,第1行代码调用atoi()函数将数字字符串转换为十进制数据123,即num1的值为123;第2行代码将字符串“abc”转换为十进制数据,此次转换失败,num2的值为0。

2、atof()函数

atof()函数用于将一个数字字符串转换为浮点数,函数声明如下所示:

double atof(const char *str);

在上述函数声明中,参数str用于接受记录数字的字符串,若函数调用成功,将返回转换后的浮点数,否则返回0。atof()函数声明位于stdlib.h文件中,如果使用该函数,则需要包含stdlib.h头文件。

atof()函数的用法示例代码如下所示:

float f1 = atof("123.1"); //将字符串“123.1”转换为浮点数123.1
float f2 = atof("abc");  //“abc”不是数字字符串,转换失败

上述代码中,第1行代码调用atof()函数将数字字符串“123.1”转换为了浮点数,即f1的值为123.1;第2行代码将字符串“abc”转换为浮点数,因为“abc”不是数字字符串,所以转换失败,f2的值为0。

点击此处
隐藏目录