调用自定义函数执行字符串反转算法时出错,求代码修正
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"); }
核心修改说明
- 将
reverse函数的返回类型改为void,因为函数仅负责打印反转结果,无需返回值 - 用传入的参数
num计算字符串长度,替代原代码中未初始化的rever - 限制
scanf的输入长度为%9s,确保字符串结束符\0有足够空间存储 - 删除所有无用变量,精简代码结构
- 添加换行输出,优化显示效果
内容的提问来源于stack exchange,提问作者swat08
相关产品推荐
相关产品推荐

