我的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; }
异常截图

问题分析与修复
- 字符串语法错误:原代码中
printf的字符串参数直接换行,不符合C语言规范,必须将换行替换为转义字符\n,否则编译会报错。 - 返回值类型不匹配:
copy_str函数声明返回char类型,但实际返回的是整数1,类型不兼容。建议将函数返回类型改为int,或者返回(char)1,通常用int返回值表示操作成功与否更合理。 - 优化建议:手动实现的字符串拷贝逻辑没问题,但如果不需要手动实现,直接使用标准库的
strcpy函数更简洁可靠。
修复后代码即可正常编译运行,输出预期结果。
内容的提问来源于stack exchange,提问作者Yooni
相关产品推荐
相关产品推荐

