#include<stdio.h>
#include<stdlib.h>
int strlen(char *str
)
{
int len
=0;
whlie(*str
++ != '\0')
{
len
+=1;
}
return len
;
指针到达字符串末尾的’\0’字节之前,while语句中的*str++表达式一直为真,它同时增加了指针的值,用于下一次循环的测试。
这段代码并不安全,如果这个函数在调用时传递了一个NULL指针,那么while语句中的*str间接访问会失败,所以函数应在解引用之前检查一下这个条件,添加essert断言:
essert(*str
!=NULL)
if(*str
==NULL)
return 0;