You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用C语言指针实现字符串反转,代码无编译报错但运行无输出求助

问题排查

  • 核心问题1:for循环终止条件逻辑错误
    原代码中reverse函数的循环判断条件写为i<0,传入size=6时i初始值为5,5<0判定结果为假,循环完全不会执行。re_word前5个元素都是未初始化的栈空间垃圾值,因此没有可预期的输出。
  • 核心问题2:有效字符长度计算错误
    原字符串"hello"的有效可打印字符长度为5,你传入的size=6包含了末尾的'\0'终止符。如果直接按size=6反转,会把原字符串末尾的'\0'放到反转后字符串的首位,即便循环执行也会导致打印为空。

修正方案

可正常运行的修改后代码

#include <stdio.h>
void reverse(char *p,char *v,int size){
    // 修改循环条件为i >= 0,遍历到第一个字符为止
    for(int i=size-1,j=0;i>=0;i--){
        *(v+j) = *(p+i);
        j++; 
    }
}
int main(){
    char word[6] = {"hello"};
    char re_word[6];
    re_word[5]='\0';
    // 传入有效字符长度5,不需要反转原字符串的终止符
    reverse(word,re_word,5);
    printf("%s",re_word);
}

优化提示

也可以直接调用C标准库strlen函数自动计算字符串有效长度,避免手动传参出错。

内容的提问来源于stack exchange,提问作者elhirchek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:03