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

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

附上源码

#include "stdafx.h"
#include 
/************************************************************************/
/* 循环左移字符串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);
}

你可能感兴趣的:(C语言进阶)