#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 函数:将字符串中的字符向右移动 'n' 个位置
void move_right(char str[], int len, int n)
{
// 为移动后的字符串分配内存空间
char* str_move = (char*)malloc(len + 1);
int index = 0;
int i;
// 循环遍历原始字符串中的每个字符
for (i = 0; i < len; i++)
{
// 计算字符移动后的新索引位置
index = (i + n) % len;
// 将字符放置在移动后的字符串中的新索引位置
str_move[index] = str[i];
}
// 在移动后的字符串末尾添加空字符,确保字符串正确终止
str_move[i] = '\0';
// 将移动后的字符串复制回原始字符串
strcpy(str, str_move);
// 释放为移动后的字符串分配的内存空间
free(str_move);
}
int main()
{
// 原始字符串及其长度
char str[] = "abcdefghi";
int len = strlen(str);
int n;
// 从用户获取要移动的位置数
printf("请输入要右移的位数:");
scanf("%d", &n);
// 显示原始字符串
printf("没改前:%s\n", str);
// 调用 move_right 函数执行字符移动操作
move_right(str, len, n);
// 显示移动后的修改字符串
printf("移动后:%s\n", str);
return 0;
}