用C语言编写一字符串移动函数char *shift(char *pstr, int n, char mode),该函数的功能是: (1)当mode = ‘R’时,将字符串pstr循环右移n位; (2)当mode = ‘L’时,将字符串pstr循环左移n位; 返回值为移位后的字符串的首地址。
时间: 2024-02-18 13:00:27 浏览: 141
C语言实现字符串循环右移
5星 · 资源好评率100%
好的,下面是使用C语言编写的字符串移动函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* shift(char* pstr, int n, char mode)
{
int len = strlen(pstr);
char* result = (char*)malloc(sizeof(char) * (len + 1));
strcpy(result, pstr);
if (mode == 'R') {
n %= len;
if (n == 0) {
return result;
}
strrev(result);
strrev(result + n);
strrev(result + len - n);
} else if (mode == 'L') {
n %= len;
if (n == 0) {
return result;
}
strrev(result);
strrev(result + len - n);
strrev(result + n);
}
return result;
}
int main()
{
char str[] = "Hello, World!";
printf("%s\n", shift(str, 3, 'R')); // 输出:ld!Hello, Wor
printf("%s\n", shift(str, 2, 'L')); // 输出:llo, World!He
return 0;
}
```
这个函数的实现和上一个例子类似,只是使用了C语言的标准库函数`strrev()`,这个函数可以翻转一个字符串。在移动操作中,先翻转整个字符串,然后翻转前n个字符或后面的字符,最后再翻转整个字符串就可以了。
同样需要注意的是,使用完毕后需要手动释放内存,否则可能会导致内存泄漏。
阅读全文