当前位置: 首页 > news >正文

编写一个函数,实现将char类型的字符串,循环右移n个位置

例如 abcdefg  右移2个位置变成 fgabcde


void LoopMove(char* pStr, int n)
{
	int str_n = strlen(pStr);
	if (str_n == 0 || n < 0)
		return;
	int st = n % str_n;
	char temp[128];
	memcpy(temp,pStr+str_n-st,st);
	memcpy(temp+st,pStr,str_n-st);
	memcpy(pStr, temp, str_n);
}

扩展:

memcpy 是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *dest, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标dest中。

strcpy 是C++语言的一个标准函数,函数原型 char *strcpy(char* dest, const char *src); 作用是把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间;返回指向dest的指针

char* strcpy(char* des, const char* source)
{
	char* r = des;
	assert((des != NULL) && (source != NULL));
	while ((*r++ = *source++) != '\0');
	return des;
}

/*其中assert(是宏,而非函数) 为断言,assert通过检查表达式的值来决定是否需要终止执行程序,
即若表达式值为假,那它就会首先向标准错误流stderr打印一条出错信息,再由abort函数终止程序执行*/

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

 memset 是C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

函数原型 :void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s。

相关文章:

  • 类构造、析构、赋值函数示例
  • 数组指针指针数组
  • LeeCode 20.有效的括号
  • LeeCode 26 删除排序数组中的重复项,返回数组新长度
  • LeeCode 27 移除元素,返回数组新长度
  • LeeCode 2125 合并两个(K个)有序链表
  • (10)STL算法之搜索(二) 二分查找
  • 单例模式(懒汉模式、饿汉模式)
  • 工厂模式抽象工厂
  • 链表翻转
  • LRU缓存算法
  • 判断单链表中是否存在环
  • LeeCode61 旋转链表
  • LeeCode74 搜索二维矩阵
  • (0)Nginx 功能特性
  • [case10]使用RSQL实现端到端的动态查询
  • 「译」Node.js Streams 基础
  • 2019年如何成为全栈工程师?
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • angular2 简述
  • Brief introduction of how to 'Call, Apply and Bind'
  • Fabric架构演变之路
  • Kibana配置logstash,报表一体化
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Mac转Windows的拯救指南
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • swift基础之_对象 实例方法 对象方法。
  • Vue实战(四)登录/注册页的实现
  • Web设计流程优化:网页效果图设计新思路
  • 爱情 北京女病人
  • 编写符合Python风格的对象
  • 简析gRPC client 连接管理
  • 前端设计模式
  • 如何胜任知名企业的商业数据分析师?
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 在weex里面使用chart图表
  • 如何在招聘中考核.NET架构师
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # .NET Framework中使用命名管道进行进程间通信
  • (C语言)fgets与fputs函数详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (二十四)Flask之flask-session组件
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (九十四)函数和二维数组
  • (七)Knockout 创建自定义绑定
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)c++ std::pair 与 std::make
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .naturalWidth 和naturalHeight属性,
  • .net 获取url的方法
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝