用 C 重写 strlen()

1 c string function

如果有人想尝试在 中重写字符串函数C,这段代码是否可以替代标准strlen()函数?我一直无法运行此代码,因为我坐在车里用 iPhone 打字。

int strlen(char * s) {
      int i = 0, sum = 0;
      char c = s[0];

      while(c != '\0') {
            sum++;
            c = s[++i];
      }
      return sum;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的反馈!

Vla*_*cow 5

如果要重写标准 C 函数strlen,则应遵循函数的声明约定

size_t strlen(const char *s);
Run Code Online (Sandbox Code Playgroud)

首先,它应该具有返回类型size_t,并且参数应该具有限定符const,您可以将该函数与常量字符数组一起使用。还有这样的名字sum不太适合这个功能。在您的函数中,您有太多局部变量。

我会用以下方式编写函数

size_t strlen( const char *s ) 
{
    size_t n = 0;

    while ( s[n] ) ++n;

    return n;
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是只使用指针。例如

size_t strlen( const char *s ) 
{
    const char *p = s;

    while ( *p ) ++p;

    return p - s;
}
Run Code Online (Sandbox Code Playgroud)