strlen的实现--计算一个字符串的长度

mac2026-04-10  2

#include<stdio.h> #include<stdlib.h> int strlen(char *str) { int len=0; /* 依次访问字符串的内容,计算字符数,知道遇到NUL终止符。 */ whlie(*str++ != '\0') { len+=1; } return len;

指针到达字符串末尾的’\0’字节之前,while语句中的*str++表达式一直为真,它同时增加了指针的值,用于下一次循环的测试。

这段代码并不安全,如果这个函数在调用时传递了一个NULL指针,那么while语句中的*str间接访问会失败,所以函数应在解引用之前检查一下这个条件,添加essert断言:

essert(*str!=NULL) if(*str==NULL) return 0;
最新回复(0)