请用c语言编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
时间: 2024-03-10 08:48:47 浏览: 92
好的,这里是一个实现上述功能的C语言函数:
```c
#include <stdio.h>
#include <string.h>
void fun(char *str, int m) {
int n = strlen(str);
if (m >= n) return; // 如果m大于等于字符串长度,不需要移动
char tmp;
for (int i = 0; i < m; i++) {
tmp = str[i];
for (int j = i; j < n - m + i; j += m) {
str[j] = str[j + m];
}
str[n - m + i] = tmp;
}
}
```
函数 `fun` 的参数包括一个字符串指针 `str` 和一个整数 `m`,表示需要将字符串中前面的 `m` 个字符移到字符串的最后。函数中首先判断 `m` 是否大于等于字符串的长度,如果是则直接返回,因为不需要移动。然后遍历前面的 `m` 个字符,将它们依次移到字符串的最后。具体实现是,将第 `i` 个字符保存到一个临时变量 `tmp` 中,然后将第 `i` 个字符到第 `n-m+i` 个字符(即从第 `i` 个字符开始,每隔 `m` 个字符取一个,直到字符串末尾)向前移动 `m` 个字符,最后将 `tmp` 存放到字符串的最后 `m` 个字符中。
下面是一个简单的测试程序:
```c
int main() {
char str[] = "hello, world!";
printf("原字符串:%s\n", str);
fun(str, 6);
printf("移动后:%s\n", str);
return 0;
}
```
运行结果:
```
原字符串:hello, world!
移动后:world!hello,
```
阅读全文