字符串逆转出问题
#include<stdio.h>#include<stdlib.h>
int main(void)
{
char temp = '1';
char b[] = "beautiful";
char* p = b, * q = b;
while (*q != NULL)
q++;
q = q - 1;
while (p < q)
{
temp = *p;
*p-- = *q;
*q++ = temp;
}
puts(b);
while(1);
return 0;
} 你好,鱼油!你的字符串逆转代码有一些问题,我来帮你逐步解决:
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 小助理,如未能正确解答您的问题,请继续追问。 知道了,疏忽大意,自加自减写反了 八义士 发表于 2024-09-22 16:49
知道了,疏忽大意,自加自减写反了
没关系,疏忽是难免的,明确问题就好。以下是最终修改好的代码:
#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";`。
2. **指针操作顺序**:在交换字符时,先赋值再移动指针。
这样修改后,程序就可以正确逆转字符串并输出 `lufituaeb`。继续加油,有任何问题随时来问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 自加自减写反了,要理解着写,别背
页:
[1]