strcpy函数

功能:char *strcpy(char *str1,char *str2),把字符串2复制到字符串1。

源码:

char *strcpy(char *str1,char *str2)

{

assert(str1 != NULL && str2 != NULL);

char *p = str1;

while( *str1++ == *str2++);

return p;

}

在练习题中的实现,编译环境vs2008:

 1 /*Test*/
 2 #include<stdio.h>
 3
 4 char *my_strcpy(char *str1,char *str2)
 5 {
 6     char *p = str1;
 7     while( *str1++ = *str2++);
 8     return p;
 9 }
10 int main()
11 {
12     char arr[]="hello";
13     /*char *s="worldj";//会原样打出,但也会bug,越界了*/
14     char *s="world";
15     printf("%s\n",my_strcpy(arr,s));
16
17     return 0;
18 }
时间: 2024-10-05 16:42:59

strcpy函数的相关文章

strcpy函数的实现

大家一般觉得名不见经传strcpy函数实现不是非常难,流行的strcpy函数写法是: char *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = dst; while((* dst++ = * src++) != '\0') ; return ret; } 假设注意到: 1,检查指针有效性: 2,返回目的指针des: 3,源字符串的末尾 '\0' 须要拷贝.

编写一个程序实现strcpy函数的功能

1 #include <stdio.h> 2 #include <string.h> 3 #define N 5 4 5 6 char *mycpy(char *s1, char *s2) 7 { 8 //数组型 9 /* int i; 10 while(s2[i] != '\0') { 11 s1[i] = s2[i]; 12 i++; 13 } 14 s1[i] = '\0'; 15 return s1; */ 16 //指针型 17 char *p = s1; 18 whil

strcpy函数的最优实现方法

微软自带的strcpy函数: (不完善,4分) charcharconstchar char while'\0' return } 最完善的strcpy函数: (推荐使用,10分) charcharconstchar//将源字符串加const,表明其为输入参数不能修改 if//考虑到源字符串和目的字符串有重叠,也即地址相同 return //对源地址和目的地址加非空地址断言 char//备份目的字符串的首地址,由于后面的操作会修改dest值 while'\0' return//为了实现链式操作,

strcmp函数和strcpy函数

(一)strcmp函数 strcmp函数是比較两个字符串的大小,返回比較的结果.一般形式是: i=strcmp(字符串,字符串); 当中,字符串1.字符串2均可为字符串常量或变量:i   是用于存放比較结果的整型变量.比較结果是这样规定的: ①字符串1小于字符串2,strcmp函数返回一个负值; ②字符串1等于字符串2,strcmp函数返回零; ③字符串1大于字符串2,strcmp函数返回一个正值;那么,字符中的大小是怎样比較的呢?来看一个样例. 实际上,字符串的比較是比較字符串中各对字符的AS

通过编写字符复制函数strcpy函数学编程

首先我们先来开一下标准函数中的strcpy长什么样子 C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间. 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且des

strcpy函数的实现【转】

转自:http://www.cnblogs.com/chenyg32/p/3739564.html 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码 char * strcpy(char *dst,const char *src) //[1] { assert(dst != NULL &&am

strcpy函数和string类的实现

1 strcpy函数实现 void* memcpy1(void *dst,const void *src,int count){ assert(dst != NULL && src!= NULL && count>=0); void *temp = dst; char *pdst = (char*)dst; char *psrc = (char*)src; if(pdst>=psrc && pdst <= psrc+count-1) { p

memcpy、memmove、memset及strcpy函数实现和理解

memcpy.memmove.memset及strcpy函数实现和理解 关于memcpy memcpy是C和C++ 中的内存拷贝函数,在C中所需的头文件是#include<string.h>, 在C++中需要包含的头文件是#include其函数原型如下: void *memcpy(void *dest, const void *src, size_t n); 其功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 库函数中的memcpy不能处理sr

自定义strcpy函数

自定义实现复制函数 <span style="font-size:18px;">/strcpy函数   void strCpy1(char dest[], char source[])   {       int i = 0;       while (source[i] != '\0') {           dest[i] = source[i];           i++;       }       dest[i] = '\0';   }   void strC

[转] strcpy函数的实现

转自:strcpy函数的实现 代码实现 #include <iostream> #include <assert.h> #include <iostream> //#include <string.h> using namespace std; int strlen(const char *src) { assert(src != NULL); int lens = 0; while (*src++ != '\0') lens++; return lens;