赞
踩
目录
函数原型: char*strcpy(char*dest,const char*src) //将src复制到dest字符数组中
头 文 件:#include <string.h>
返 回 值:char* 类型,返回的是第一个参数的值,即目的数组的首地址;
注 意:
1、strcpy只用于字符串复制,遇到‘\0’时停止,还会复制字符串的结束符'\0'; 所以源字符串必须 以’\0’结束,也会将源字符串的’\0’拷贝到目标空间
2、目标空间必须可变
3、如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别 留意,或者用strncpy()来代替
1、strcpy() 函数用来复制字符串;strncpy()用来复制字符串的前n个字符,所以要多传一个参数n
大家可以对比一下两个函数原型:
char *strcpy(char *dest, const char *src);
char * strncpy(char *dest, const char *src, size_t n);
2、不像strcpy(),strncpy()不会向dest追加结束标记'\0'
————————————————
版权声明:本文为CSDN博主「lambo mercy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_65601072/article/details/123967796
- #include<stdio.h>
- #include<string.h>
-
-
- char* mystrcpy(char *data,char *data2) //第一种,实现字符串拷贝
- {
- if(data == NULL || data2 == NULL){
- return NULL;
- }
-
- char *p = data;
-
- while(*data2 != '\0'){ //!!!!! while(p != '\0'){ 逻辑错误!!!!!
- *p = *data2;
- p+1;
- data2+1;
- }
-
- *p = '\0';
-
- return data;
- }
-
- char* mystrcpy2(char *data,char *data2)
- {
- if(data == NULL || data2 == NULL){
- return NULL;
- }
-
- char *p = data;
-
- while(*data2 != '\0'){
- *p++ = *data2++;
- }
-
- *p = '\0';
-
- return data;
- }
-
- char* mystrcpy3(char *data,char *data2)
- {
- if(data == NULL || data2 == NULL){
- return NULL;
- }
-
- char *p = data;
-
- while( (*p++ = *data2++) != '\0') //记住这种写法while( (*p++ = *data2++)
-
- *p = '\0';
-
- return data;
- }
-
-
- int main()
- {
- char arr[128] = {'\0'};
- char *p = "yyds666666888";
-
- //mystrcpy (arr,p);//第一种写法,实现字符串拷贝
- // mystrcpy2(arr,p);//第二种,实现字符串拷贝
- mystrcpy3(arr,p);//第三种,实现字符串拷贝
-
-
- //strcpy(arr,p);
- printf("arr %s",arr);
-
-
- return 0;
- }//7.6字符串的拷贝
arr yyds666666888
- #include<stdio.h>
- #include<string.h>
-
- char* mystrcpy4(char *data,char *data2,int number)
- {
- if(data == NULL || data2 == NULL){ //先判断data是否是野指针,如果是野指针下面的执行copy字符串毫无意义
- return NULL;
- }
-
- char *p = data; //先保存一个字符串数组arr地址,对进行copy偏移操作,
- //mystrcpy4函数中形式参数char *data,保存的是arr起始地址,不要动,
- //结束copy的操作时候需要返回arr的开头地址
-
- while(*data2 != '\0' && number>0){
- *p++ = *data2++;
- number--;
- }
-
-
- /* while(*data2 != '\0'){
- if(number == 0){
- break;
- }
-
- *p++ = *data2++;
- number--;
- }
- */
-
- if(number>0){
- while(number>0){
- *p++ = '\0';
- number--;
-
- }
- return data;
- }
-
- *p = '\0';
-
- return data;
- }
-
-
- int main()
- {
- char arr[128] = {'\0'};
- char *p = "yyds666666888";
-
- mystrcpy4(arr,p,4); //把字符串p的内容,拷贝到arr ,并且拷贝四个
- //strcpy(arr,p);
- printf("arr %s",arr);
-
-
- return 0;
- }//7.6字符串的拷贝
arr yyds
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。