注册 登录
编程论坛 C语言论坛

有时候我们需要将一段文字移动往前或者往后移动一段距离。例如,想将 thequickbrownfoxjumpsoveralazydog 中的lazydog移动

wangjx 发布于 2020-05-22 14:28, 1467 次点击
#include <stdio.h>
/* 局部翻转一个字符数组s,从下标start到下标end */
void part_reverse(char s[], int start, int end)
{
  int temp;
  for (; start < end; ++start, --end)
  {
    temp = s[start];
    s[start] = s[end];
    s[end] = temp;
  }
}

/* 将长度为n的字符数组的前i个字符后移 */
void rotate(char s[], int n, int i) {
  /* 你的代码<开始> */

  /* 你的代码<结束> */
}

int main() {
  char test_string1[] = "abcdef";
  char test_string2[] = "thequickbrownfoxjumpsoveralazydog";
  rotate(test_string1, 6, 3);
  rotate(test_string2, 33, 26);
  printf("%s\n", test_string1);
  printf("%s\n", test_string2);
  return 0;
}
1 回复
#2
rjsp2020-05-22 16:47
烂代码,又没把需求说完整。
瞎猜猜,
    part_reverse( s, 0, i-1 );
    part_reverse( s, i, n-1 );
    part_reverse( s, 0, n-1 );
1