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

C语言实现替代strlen的自定义my_strlen函数填空求助

C语言自定义my_strlen函数空缺补全方案

空缺位置补全内容

四个空缺位置的正确填写内容如下:

  • (1):s :将传入的字符串首地址赋值给临时指针p,避免修改原入参指针
  • (2):*p != '\0' :判断当前指针指向的字符是否不是字符串结束符,是则继续循环
  • (3):p++ :每次循环将指针向后偏移1个char长度,遍历下一个字符
  • (4):p - s :同类型指针相减结果为两个地址之间的char元素个数,刚好是字符串从首地址到结束符之前的字符总数,也就是字符串长度

补全后完整可运行代码

#include <stdio.h>
#define MAXLENGTH 80

int my_strlen(char* s)
{
    char *p = s;
    while (*p != '\0')
        p++;

    return p - s;
}

int main()
{
    char str[MAXLENGTH];
    int len;
    printf("Enter a string:");
    // 注:gets函数存在缓冲区溢出风险,已被C11标准移除,实际开发建议用fgets替代
    gets(str);
    len = my_strlen(str);
    printf("The length of the string %s is %d\n", str, len);
}

关于你之前尝试写法的说明

你之前将*p++ != '\0'写在while判断条件中,这种写法会导致判断到结束符后指针仍会多偏移一次,虽然可以通过调整返回值逻辑得到正确结果,但可读性更差,不推荐使用。如果要沿用该写法,(3)可以填空语句;,(4)填写p - s - 1即可,但该写法容易出错,更推荐上述先判断后偏移的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:06