標籤:
比如:“abcdefghi”迴圈右移2位就是:“hiabcdefg”給定函數原型:void RightLoopMove(char *pStr,unsigned short steps)方法一:首先將最後面一個字元賦給臨時變數,再將前面字元依次往後挪動一個位置,最後把臨時變數賦給第一個字元。
#include <stdio.h>#include <string.h>void RightLoopMove(char *pStr, unsigned short steps){ char *l = pStr; char *r = pStr + strlen(pStr) - 1; while (steps) { char tmp = *r; char *p = r; while (p > l) { *p = *(p - 1); p--; } *l = tmp; steps--; }}int main(){ char a[] = "abcdefghi"; RightLoopMove(a,2); printf("%s\n", a); return 0;}
方法二:三次翻轉字串
#include <stdio.h>#include <string.h>void reverse(char *l, char *r){ while (l < r) { char tmp = *l; *l = *r; *r = tmp; l++; r--; }}void RightLoopMove(char *pStr, unsigned short steps){ int n = strlen(pStr); reverse(pStr, pStr+n-steps-1); reverse(pStr + n - steps,pStr+n-1); reverse(pStr,pStr+n-1);}int main(){ char a[] = "abcdefghi"; RightLoopMove(a,2); printf("%s\n", a); return 0;}
【C語言】字串右迴圈移位