鱼C论坛

 找回密码
 立即注册
查看: 416|回复: 4

字符串逆转出问题

[复制链接]
发表于 2024-9-22 16:42:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-22 16:49:03 | 显示全部楼层
你好,鱼油!你的字符串逆转代码有一些问题,我来帮你逐步解决:

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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-22 16:49:45 | 显示全部楼层
知道了,疏忽大意,自加自减写反了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-22 16:49:52 | 显示全部楼层
八义士 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-23 18:44:57 | 显示全部楼层
自加自减写反了,要理解着写,别背
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 20:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表