长度不受限制的字符串
什么叫做长度不受限制的字符串呢?
其实就是不管他定义的变量有多么大,即使程序发生错误也必须要找到\0来停止程序,即可能会输出随机数
strlen函数
strlen函数的数据类型
size_t strlen(const char* str)
从这里我们可以发现,strlen函数的参数类型其实是一个字符串的指针
自己实现一个strlen函数
利用计数器的方法实现
mystrlen(char*str)
{int count = 0;
while(*str != '\0')
{
count++;
str++;
}
return count;
}
利用函数的递归实现
char* mystrlen(char* a)
{
if(*a != '\0')
{
return 1 + mystrlen(a+1);
}
else
return 0;
}
int main()
{
char a[] = "hello world";
char ret = mystrlen(a);
printf("%d",ret);
return 0;
}
strlen函数的返回类型
从第一点可以看出他的返回类型是size_t类型也就是我们俗称的无符号整形
具体的我们可以从一个例子出发`
if(strlen("abc") - strlen("abcdef") > 0)
{
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
对于这个代码我们需要讨论的是最后输出的结果是什么?
结果显而易见是hehe
因为strlen返回的是一个无符号的整形,所以两个strlen函数相减也一定是一个无符号的整形