您的位置:首页 > 其它

把一个字符串循环左移n个字符

2015-09-09 14:50 190 查看

源码均在XP系统,VS2008下编译并运行

附上源码

#include "stdafx.h"
#include <string.h>
/************************************************************************/
/* 循环左移字符串N位                                                                     */
/************************************************************************/

void lefShift(char *source,int length);

int _tmain(int argc, _TCHAR* argv[]) {
char source[20] = "tangtangtang";
printf("原始字符串:%s\n",source);
lefShift(source,2);
printf("移动后:%s\n",source);
getchar();
}

void lefShift(char *source,int length) {
char temp[20];
char *tempPointer = temp;
// 1.保存移出去的字符串
for (int i = 0; i < length;i++)
{
*tempPointer = source[i];
tempPointer ++;
}
*tempPointer = '\0';

// 2.字符串整体左移
printf("左移的字符:%s\n",temp);

for (int j = length;j < strlen(source); j++)
{
source[j-length] = source[j];
}
source[strlen(source) - length] = '\0';
printf("循环移动以后的字符串1:%s\n",source);

// 3.拼接字符串到原始字符串末尾
char *sourcePointer = source;
sourcePointer += strlen(source);
for (int i = 0; i < strlen(temp); i++)
{
*sourcePointer = temp[i];
sourcePointer ++;
}
*sourcePointer = '\0';
printf("循环移动以后的字符串2:%s\n",source);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息