如果有人想尝试在 中重写字符串函数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)
非常感谢您的反馈!
如果要重写标准 C 函数strlen,则应遵循函数的声明约定。
Run Code Online (Sandbox Code Playgroud)size_t strlen(const char *s);
首先,它应该具有返回类型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)