【发布时间】:2015-11-10 21:36:02
【问题描述】:
size_t strlen(const char* c)
{
auto *c1 = c;
while(*c1++);
return c1 - c;
}
我能找到的错误:
* 缺少对 c 的 NULL 检查
* c1 应声明为 char 指针(或者是否需要?)
* 应该在返回之前将类型转换为size_t
【问题讨论】:
-
您的问题到底是什么?您是否观察到不正确的行为?如果是这样,请告诉我们您看到了什么,以及您的预期。
-
while(*c1++);-->while(*c1) c1++; -
自动在 c 中工作吗?将您的标签更改为 c++ 或将 auto 更改为 char。
-
@RobertJacobs:它没有。
-
@RobertJacobs 这是一个 C++11 特性 IIRC,与 C 无关。这段代码有很多问题。