size_t strlen(const char* c)
{
auto *c1 = c;
while(*c1++);
return c1 - c;
}
我能找到的错误:
*遗漏c
的NULL检查
* c1
应该被声明为char
指针(或者是否需要?)
*在返回之前应该转换为size_t
答案 0 :(得分:4)
关闭1:while(*c1) c1++;
- > const char *c1 = c;
“c1应该声明为char指针(或者是否需要?)”我会使用auto *c1 = c;
。需要查看C11中auto
是否正常
[编辑]看不到const char *c1 = c;
在C11中有效。建议return (size_t) (c1 - c);
“返回前应该将size_t强制转换”。 ptrdiff_t
是一个好主意,因为指针差异是类型size_t
(有符号整数类型),strlen(const char* c)
是无符号整数类型。这会消除诸如gcc -Wsign-conversion
“缺少NULL检查c”,因为NULL
需要指向字符串的指针而SELECT COUNT(ID) AS total_count
FROM HTG_ScheduleRequest
WHERE AssignedTech = '".$emp."'
AND (ScheduleDateExact > CURDATE())
AND JobStatus IN (2,5,8)
AND RecordType = '1'
OR SSR = '".$emp."'
AND (ScheduleDateCurrent > CURDATE())
AND JobStatus IN (3,4)
AND RecordType = '1'
不是指向字符串的指针。
答案 1 :(得分:2)
看起来你总会得到比应有的答案1。您需要减去1或return c1 - c - 1
;