你好,鱼油!你的字符串逆转代码有一些问题,我来帮你逐步解决:
1. 包含头文件 `<stdio.h>`。
2. 声明字符数组而不是字符指针,以避免字符串文字的不可修改性。
3. 修改指针操作符的顺序。
这里是修改后的代码:
#include <stdio.h>
int main(void) {
char temp;
char b[] = "beautiful"; // 使用数组而不是指针
char* p = b;
char* q = b;
// 将 q 指向字符串的末尾
while (*q != '\0')
q++;
q--; // 移动到最后一个字符
// 交换字符
while (p < q) {
temp = *p;
*p = *q; // 先赋值再移动指针
*q = temp;
p++;
q--;
}
puts(b);
return 0;
}
### 主要修改点:
1. **字符串数组声明**:使用字符数组 `char b[] = "beautiful";` 而不是字符指针 `char* b = "beautiful";`,因为字符串文字是常量,不应修改。
2. **指针操作顺序**:在交换字符时,先赋值再移动指针。即 `*p = *q; p++;` 和 `*q = temp; q--;`。
这样,你的程序就能正确逆转字符串并输出 `lufituaeb`。希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |