不用字符串函数,用c语言实现字符串前移
时间: 2023-05-25 16:06:18 浏览: 152
可以使用指针来实现字符串前移:
```
#include <stdio.h>
#define MAX_LEN 100
void moveString(char *str, int n);
int main() {
char str[MAX_LEN];
int n;
printf("请输入字符串:");
scanf("%s", str);
printf("请输入前移的位数:");
scanf("%d", &n);
moveString(str, n);
printf("前移后的字符串为:%s\n", str);
return 0;
}
void moveString(char *str, int n) {
int len = 0;
char *p = str;
while (*p != '\0') {
len++;
p++;
}
// 将 n 对 len 取余,得到实际需要前移的位数
n = n % len;
// 如果移动的位数等于 0,不需要移动
if (n == 0) {
return;
}
// 从第 n 个字符开始,将每个字符往前移动 n 位
for (int i = n; i < len; i++) {
str[i-n] = str[i];
}
// 将最后 n 个字符移到字符串末尾
for (int i = len-n; i < len; i++) {
str[i] = str[i-n+len];
}
}
```
在函数的实现中, `moveString` 函数接收一个指针类型的参数 `str` 和一个整型参数 `n`,表示需要把 `str` 前移 `n` 位。首先使用指针来计算字符串的长度,并通过取余得到实际需要前移的位数 `n`。如果 `n` 等于 0,就不需要前移,直接返回。
然后从第 `n` 个字符开始,使用循环将每个字符往前移动 `n` 位。最后再将最后 `n` 个字符移到字符串末尾。
阅读全文