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

用指针实现C语言strcat函数运行输出为空,求问题排查

问题分析与解决
  • 核心问题:修改只读字符串常量
    你定义的char *a = "one";中,"one"是字符串字面量,它被存储在程序的只读内存区域。当strcatt函数尝试通过strcpyy往a指向的内存追加内容时,本质是在修改只读内存,这属于未定义行为——程序可能输出空、崩溃、出现乱码,或者表现出其他不可预测的结果。

  • 修正方案
    需要将a定义为可修改的字符数组,并确保数组有足够的空间容纳原始字符串和要追加的内容。修改后的main函数示例:

    int main(){
        char a[20] = "one"; // 定义足够大的字符数组
        char *b = "two";
        printf("%s", strcatt(a,b)); // 输出:onetwo
    }
    
  • 额外说明
    你的strcpyy和strcatt函数的逻辑本身是正确的,问题出在调用时传入了不可修改的字符串常量作为目标地址。

内容的提问来源于stack exchange,提问作者Gauss-00

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:45:42