字符串旋转操作(函数指针实现)
时间: 2023-12-22 10:58:08 浏览: 35
要实现字符串的旋转操作,可以使用函数指针来完成。首先,你需要定义一个函数指针类型,用于指向字符串旋转操作的函数。然后,你可以创建一个函数,该函数接受一个字符串和旋转次数作为参数,并调用函数指针执行字符串旋转操作。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef void (*RotateStringFuncPtr)(char*, int);
void rotateLeft(char* str, int rotateCount) {
int length = strlen(str);
rotateCount %= length;
// 创建一个临时缓冲区,用于保存旋转后的字符串
char* temp = (char*)malloc((length + 1) * sizeof(char));
strcpy(temp, str);
// 将字符串中的字符向左旋转
for (int i = 0; i < length; i++) {
str[i] = temp[(i + rotateCount) % length];
}
free(temp);
}
void rotateRight(char* str, int rotateCount) {
int length = strlen(str);
rotateCount %= length;
// 创建一个临时缓冲区,用于保存旋转后的字符串
char* temp = (char*)malloc((length + 1) * sizeof(char));
strcpy(temp, str);
// 将字符串中的字符向右旋转
for (int i = 0; i < length; i++) {
str[i] = temp[(i - rotateCount + length) % length];
}
free(temp);
}
int main() {
char str[] = "Hello, World!";
int rotateCount = 2;
RotateStringFuncPtr rotateFunc = rotateLeft;
rotateFunc(str, rotateCount);
printf("Rotated string: %s\n", str);
return 0;
}
```
在上面的示例代码中,我们定义了两个函数 `rotateLeft` 和 `rotateRight`,分别实现左旋转和右旋转操作。然后,我们定义了一个函数指针类型 `RotateStringFuncPtr`,用于指向字符串旋转操作的函数。在 `main` 函数中,我们创建了一个函数指针 `rotateFunc`,并将其指向 `rotateLeft` 函数。最后,我们调用 `rotateFunc` 函数指针执行字符串旋转操作,并打印旋转后的字符串。
请注意,这只是一个示例代码,你可以根据实际需求进行修改和扩展。