linux 字符串循环移动函数实现
最近看了《嵌入式系统C语言高级编程》一书,其中有一道是实现字符串循环移动的习题,自己写了下,并且在Ubuntu14.04上进行了测试,发现可以使用,还不错,特来记录下.(>_<)
/*
字符串循环左右移函数
pStr: 要移动的字符串
nSteps: 移动位数
bLeftOrRight: 为0表示左移, 其他右移
usage:
abcdef --> efabcd nSteps = 2 右移
abcdef --> cdefab nSteps = 2 左移
*/
int StrRotMove(char *pStr, int nSteps, int bLeftOrRight)
{
if(NULL == pStr) return -1;
nSteps = nSteps % strlen(pStr); // 防止越界, hash
int n = strlen(pStr) - nSteps;
char tmp[MAX_LEN];
(bLeftOrRight==0) ? strcpy(tmp, pStr + nSteps) : strcpy(tmp, pStr + n);
(bLeftOrRight==0) ? strcpy(tmp + n, pStr) : strcpy(tmp + nSteps, pStr);
*(tmp + strlen(pStr)) = 0;
strcpy(pStr, tmp);
return 0;
}