C语言字符串循环右移
时间: 2024-08-28 07:03:46 浏览: 46
C语言实现字符串循环右移
5星 · 资源好评率100%
在C语言中,字符串循环右移通常指的是将字符串中的字符向右移动固定位数,同时保持原字符顺序。由于C语言中的字符串是以'\0'结束的字符数组,所以直接操作每个元素并不方便。我们可以借助指针来实现这个功能。下面是一个简单的示例,假设我们要将字符串`s`循环右移`n`位:
```c
#include <stdio.h>
#include <string.h>
void string_circular_right_shift(char* s, int n) {
if (s == NULL || n <= 0) return;
int len = strlen(s); // 获取字符串长度
n %= len; // 对移动位数取模,避免超出字符串范围
char temp[len]; // 创建临时存储区
for (int i = 0; i < len; ++i) {
temp[(i + n) % len] = s[i]; // 将字符移动到新位置并保存到临时数组
}
memcpy(s, temp, len); // 将临时数组的内容复制回原字符串
}
int main() {
char str[] = "Hello, World!";
int shift = 3;
string_circular_right_shift(str, shift);
printf("Shifted String: %s\n", str);
return 0;
}
```
在这个例子中,如果`shift`大于字符串长度,我们先对`shift`取模,确保不会超过字符串的边界。然后通过遍历整个字符串,将每个字符移动到新的位置,并用临时数组存储结果。
阅读全文