程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> strcpy和memcpy的編程實現,strcpymemcpy編程

strcpy和memcpy的編程實現,strcpymemcpy編程

編輯:關於C語言

strcpy和memcpy的編程實現,strcpymemcpy編程


 1 char *strcpy(char *dest,char *src)
 2 {
 3     char *d=dest;//輸入的參數進行備份
 4     char *s=src;
 5 
 6     int count=0;
 7 
 8     assert(dest!=NULL && src!=NULL);//指針合法性檢測          
    if(src==dest) return src; 11 count = strlen(src) +1;//計算src字符串長度 12 if(count <= 1) return 0;//src字符串為空 13 if(dest < src || dest >= (src+count)) 14 { 15 while(count--) 16 {*d++ = *s++;}//從前向後復制 17 } 18 else{ 19 d = dest + count; 20 s = src + count; 21 while(count -- ) 22 { 23 *d-- = *s--;//從後向前復制 24 } 25 } 26 return dest; 27 }
 1 void memcpy(void *pDst,const void *pSrc,size_t size)
 2 {
 3   assert(pDst!=NULL && pSrc!=NULL);
 4   if((pSrc<pDst)&&((char *)pSrc+size>pDst))
 5   {
 6     char *pstrSrc=(char *)pSrc + size -1;
 7     char *pstrDst=(char *)pDst +size-1;
 8     while(size--)
 9       *pstrDst-- = *pstrSrc;
10   }
11   else{
12     char *pstrSrc=(char *)pSrc;
13     char *pstrDst=(char *)pDst;
14     while(size--){
15       *pstrDst++ = *pstrSrc++;
16    }
17 }

 strcpy和memcpy主要有以下3方面的區別。
1、復制的內容不同。strcpy只能復制字符串,而memcpy可以復制任意內容,例如字符數組、整型、結構體、類等。
2、復制的方法不同。strcpy不需要指定長度,它遇到被復制字符的串結束符"\0"才結束,所以容易溢出。memcpy則是根據其第3個參數決定復制的長度。
3、用途不同。通常在復制字符串時用strcpy,而需要復制其他類型數據時則一般用memcpy


c++ strcpy的函數實現

/*
1123rty
1123rty
1123rty
Press any key to continue
*/
#include <stdio.h>
char *strcopy(char*strDest,const char*strSrc) {
char *tempptr = strDest;
while(*tempptr++ = *strSrc++);
return strDest;
}

int main() {
char aa[100];
char bb[100];
gets(bb);
strcopy(aa,bb);
puts(aa);
puts(bb);
return 0;
}
 

編程:用自定義函數實現字符串處理函數strcat、 strcpy、strcmp、strlen與strlwr的功可以?

我不知道strlwr是干什麼?
1.strcat
void mycat(char *s1, char *s2)
{
while(*s1++);
s1--;
while(*s1++ = *s2++);
}
2.strcpy
void mycpy(char *s1, char *s2)
{
while(*s1++ = *s2++);
}
3.strcmp
int mycmp(char *s1,char *s2)
{
for( ; *s == *t;s++,t++)
if(*s == 0) return 0;
return *s - *t;
}
4.strlen
int mylen(char *s1)
{
char *p = s1;
while(*p++);
return p - s -1;
}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved