自定义strlen函数出现报错,请求分析原因并解决
自定义strlen函数的报错修复
你的代码存在两个核心问题,直接导致编译报错:
错误点分析
- 返回值类型不匹配:函数声明和定义都用了
void类型,但你需要返回字符串长度的整数值,void类型函数不允许返回任何值,同时主函数里试图将void类型的返回值赋值给int变量,这是类型冲突的错误。 - 函数名与标准库冲突:
strlen是C标准库<string.h>中的内置函数,自定义同名函数容易引发歧义,甚至被编译器优先调用标准库版本,导致逻辑异常。
修正后的代码
#include <stdio.h> // 修正返回值类型,同时修改函数名避免冲突 int my_strlen(char *ptr); int main() { char string[] = "david"; int a = my_strlen(string); printf("Number of characters is %d", a); return 0; } // 同步修正返回值类型与函数名 int my_strlen(char *ptr) { int count = 0; while (*ptr != '\0') { count++; ptr++; } return count; }
关键说明
- 将函数的返回值类型从
void改为int,确保能正常返回统计的字符数,同时匹配主函数中变量的类型需求。 - 把自定义函数名改为
my_strlen,彻底避免和标准库函数的命名冲突,保证代码逻辑的独立性。
内容的提问来源于stack exchange,提问作者coding monk
相关产品推荐
相关产品推荐

