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

调用自定义函数执行字符串反转算法时出错,求代码修正

C语言字符串反转代码修复

原代码存在的问题

  • 函数返回值不匹配:reverse 声明为返回 char 类型,但实际无需返回值,且返回 0 不符合类型规范
  • 未初始化变量非法使用:reverse 中未初始化的 rever 被传入 strlen,触发未定义行为
  • 冗余无用变量:main 里的 result、len 以及 reverse 里的 rever 均未实际使用
  • 输入越界风险:scanf 未限制输入长度,可能超出 num[10] 的数组容量
  • 输出格式不友好:反转打印后无换行,显示混乱

修复后的完整代码

#include <stdio.h>
#include <string.h>

void reverse(char num[]);
int main()
{
    char num[10];
    printf("Enter the number: ");
    scanf("%9s", num);
    reverse(num);
    return 0;
}

void reverse(char num[])
{
    int len = strlen(num);
    for(int i = len - 1; i >= 0; i--)
    {
        printf("%c", num[i]);
    }
    printf("\n");
}

核心修改说明

  1. 将 reverse 函数的返回类型改为 void,因为函数仅负责打印反转结果,无需返回值
  2. 用传入的参数 num 计算字符串长度,替代原代码中未初始化的 rever
  3. 限制 scanf 的输入长度为 %9s,确保字符串结束符 \0 有足够空间存储
  4. 删除所有无用变量,精简代码结构
  5. 添加换行输出,优化显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:55:14