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

我的C语言结构体代码运行异常,请求协助排查问题

代码运行异常问题排查

我编写的示例代码运行存在异常,当前代码输出结果为:

RED BALL的位置
(3,4)

项目代码

#include <stdio.h>
char copy_str(char *dest, char *src);
int Print_Obj_Status(struct obj OBJ);
struct obj{
    char name[20];
    int x, y;
} Ball;

int main(){
    Ball.x = 3;
    Ball.y = 4;
    copy_str(Ball.name, "RED BALL");

    Print_Obj_Status(Ball);

    return 0;
}

int Print_Obj_Status(struct obj OBJ) {
    printf("Location of %s\n", OBJ.name);
    printf("( %d, %d )\n", OBJ.x, OBJ.y);

    return 0;
}
char copy_str(char *dest, char *src){
    while (*src){
        *dest = *src;
        src++;
        dest++;
    }

    *dest = '\0';

    return 1;
}

异常截图

代码运行异常截图

问题分析与修复

  1. 字符串语法错误:原代码中printf的字符串参数直接换行,不符合C语言规范,必须将换行替换为转义字符\n,否则编译会报错。
  2. 返回值类型不匹配:copy_str函数声明返回char类型,但实际返回的是整数1,类型不兼容。建议将函数返回类型改为int,或者返回(char)1,通常用int返回值表示操作成功与否更合理。
  3. 优化建议:手动实现的字符串拷贝逻辑没问题,但如果不需要手动实现,直接使用标准库的strcpy函数更简洁可靠。

修复后代码即可正常编译运行,输出预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:01:07