strcpy +memcpy实现循环右移
生活随笔
收集整理的這篇文章主要介紹了
strcpy +memcpy实现循环右移
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<stdio.h>
#include<assert.h>
#include<string.h>
char?*strcpy(char*strDest,const?char*strSrc)
{
????????assert(strDest!=NULL&&strSrc!=NULL);
????????char?*?addr?=?strDest;
????????while(?*strSrc!='\0')
????????????????*strDest++?=?*strSrc++;
????????*strDest?=?'\0';
????????return?addr;
}
//循環移動steps位
void?LoopMove(char?*pStr,int?steps)
{
????????int?n?=?strlen(pStr)-steps;
????????char?temp[1000];
????????strcpy(temp,pStr+n);
????????strcpy(temp+steps,pStr);
????????*(temp+strlen(pStr))?=?'\0';
????????strcpy(pStr,temp);
}
//循環移動方式2
void?LoopMove2(char?*pStr,int?steps)
{
????????int?n?=?strlen(pStr)-steps;
????????char?temp[1000];
????????memcpy(temp,pStr+n,steps);
????????//memcpy(temp+steps,pStr,n);
????????//memcpy(pStr,temp,strlen(temp));
????????memcpy(pStr+steps,pStr,n);
????????memcpy(pStr,temp,steps);
}
int?main()
{???????char?a[]?=?"123456789";
????????//char?b[]="123";
????????//printf("%d\n",strlen(strcpy(b,a)));
????????//printf("%s,%s\n",b,a);
????????printf("%s\n",a);
????????//LoopMove(a,3);
????????LoopMove2(a,4);
????????printf("%s\n",a);
????????return?0;
}
?????????????????????????????????
#include<assert.h>
#include<string.h>
char?*strcpy(char*strDest,const?char*strSrc)
{
????????assert(strDest!=NULL&&strSrc!=NULL);
????????char?*?addr?=?strDest;
????????while(?*strSrc!='\0')
????????????????*strDest++?=?*strSrc++;
????????*strDest?=?'\0';
????????return?addr;
}
//循環移動steps位
void?LoopMove(char?*pStr,int?steps)
{
????????int?n?=?strlen(pStr)-steps;
????????char?temp[1000];
????????strcpy(temp,pStr+n);
????????strcpy(temp+steps,pStr);
????????*(temp+strlen(pStr))?=?'\0';
????????strcpy(pStr,temp);
}
//循環移動方式2
void?LoopMove2(char?*pStr,int?steps)
{
????????int?n?=?strlen(pStr)-steps;
????????char?temp[1000];
????????memcpy(temp,pStr+n,steps);
????????//memcpy(temp+steps,pStr,n);
????????//memcpy(pStr,temp,strlen(temp));
????????memcpy(pStr+steps,pStr,n);
????????memcpy(pStr,temp,steps);
}
int?main()
{???????char?a[]?=?"123456789";
????????//char?b[]="123";
????????//printf("%d\n",strlen(strcpy(b,a)));
????????//printf("%s,%s\n",b,a);
????????printf("%s\n",a);
????????//LoopMove(a,3);
????????LoopMove2(a,4);
????????printf("%s\n",a);
????????return?0;
}
?????????????????????????????????
轉載于:https://www.cnblogs.com/zhengmian/archive/2012/09/15/strcpy_memcpy.html
總結
以上是生活随笔為你收集整理的strcpy +memcpy实现循环右移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《棣华驿见杨八题梦兄弟诗》第三句是什么
- 下一篇: 微信网名带楠字的