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

自定义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;
}

关键说明

  1. 将函数的返回值类型从void改为int,确保能正常返回统计的字符数,同时匹配主函数中变量的类型需求。
  2. 把自定义函数名改为my_strlen,彻底避免和标准库函数的命名冲突,保证代码逻辑的独立性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:36