//当然strlen和strcat函数可以用汇编来编译,因为有时CPU提供了字符串处理的指令,这样就会高效些。
#include <stdio.h>
#include <assert.h>
#if 0
// 默认使用法4
// 法1
int strlen(const char* str)
{
int n;
// const char *p = str; //测试这句,这个语句不需要,因为我实参是指针,形参指针改变指向不影响实参指向
for(n = 0; *str != '\0'; n++)
{
str++;
}
return n;
}
#elif 0
// 法2
int strlen(const char* str)
{
int n = 0;
for(; *str++; n++);
return n;
}
#elif 0
// 法3
int strlen(const char* str)
{
int n = 0;
while(*str++)
{
n++;
}
return n;
}
#else
// 法4
int strlen(const char* str)
{
const char *p =str;
while(*str)//写成while(*str++)不行(因为在return时候str又加加了,会多加1),必须写成当前代码 ,
str++;
return str-p;
}
#endif
#if 0
char* strcat(char* str1, const char* str2)
{
assert((str1!=NULL)&&(str2!=NULL));
// if((str1==NULL)||(str2==NULL)) throw "Invalide arg
C语言实现strlen()4种方法和strcat()3种方法
最新推荐文章于 2024-04-29 19:52:20 发布