用C语言编写一个字符串逆序的简单函数,函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
时间: 2023-12-19 18:04:57 浏览: 91
好的,我可以为你提供一个基于指针的解法,实现字符串逆序操作。下面是代码实现:
```c
#include <stdio.h>
// 函数f对p指向的字符串进行逆序操作
void reverse(char *p) {
// 如果p为空指针,则直接返回
if (p == NULL) {
return;
}
// 计算字符串长度,用于反转操作
int len = 0;
char *q = p;
while (*q != '\0') {
len++;
q++;
}
// 反转字符串
q--;
while (p < q) {
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
int main() {
char str[] = "Hello, world!";
printf("Before reverse: %s\n", str);
reverse(str);
printf("After reverse: %s\n", str);
return 0;
}
```
在这个解法中,我们首先通过指针遍历字符串,计算出字符串的长度 len,然后从前往后依次交换每个字符和它对称的字符,交换完成后字符串就被逆序了。需要注意的是,我们在交换字符时需要使用一个临时变量来存储当前字符的值,否则交换操作会出现错误。
阅读全文