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

C程序运行崩溃,无法实现单词转大写功能,求错误排查

代码错误排查与修复

核心错误点

  • 返回值类型不匹配:Uppercase函数声明返回char类型,但实际返回的是数组指针(C语言中数组名等价于首元素指针),指针被强制截断为单个字符,触发类型不匹配的未定义行为。
  • 接收变量类型错误:main函数中用char x接收返回值,单个char无法存储指针地址,后续printf("%s",x)会把x的字符值当作内存地址访问,直接导致内存越界崩溃。
  • 循环终止逻辑不合理:原循环固定遍历100个元素,会处理字符串结束符\0之后的垃圾数据,做无用功的同时可能意外修改内存内容。

修复后的代码

// 修改返回值类型为char*,匹配数组指针
char* Uppercase(char country[]){
    int i;
    // 遍历到字符串结束符'\0'即停止,避免无效遍历
    for(i=0; country[i] != '\0'; i++){
        // 用字符常量替代ASCII码,提升代码可读性
        if(country[i] >= 'a' && country[i] <= 'z'){
            country[i] = 'A' + (country[i] - 'a');
        }
    }
    return country;
}

int main(){
    char country[100];
    printf("Enter The Country Name: ");
    scanf("%s",country);

    // 用char*类型接收指针返回值
    char* x = Uppercase(country);
    printf("Uppercase is: %s",x);

    return 0; // 补充main函数标准返回值
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:35