在C语言中,测一个字符串的大小可以用strlen函数来实现,今天写一个自定义strlen函数:
很多人说,这还不简单?
int my_strlen(const char* str)
{
if (str == NULL)
return 0;
int count = 0;
while ('\0' != *str)
{
count++;
str++;
}
return count;
}
很多人第一反应就是这样写吧。
但是我今天要讲的是另外一种方法,为了严谨我加了判断条件,总共三行代码搞定。
int my_strlen2(const char* str)
{
if (str == NULL)
return 0;
return ('\0' != *str) ? (1 + strlen1(++str)) : 0;
}
如果这是面试,是不是第二种方式会给考官一个好的映象?
程序整体代码:
#include <stdio.h>
#include <string.h>
int strlen1(const char* str)
{
if (str == NULL)
return 0;
return ('\0' != *str) ? (1 + strlen1(++str)) : 0;
}
int strlen2(const char* str)
{
if (str == NULL)
return 0;
int count = 0;
while ('\0' != *str)
{
count++;
str++;
}
return count;
}
int main()
{
char* p = NULL;
int count1 = 0, count2 = 0, count3 = 0;
p = (char*)malloc(100 * sizeof(char));
while (scanf("%s",p)!=EOF)
{
count1 = strlen1(p);
count2 = strlen2(p);
count3 = strlen(p);
printf("strlen1(p):%d\t strlen2(p):%d\t strlen(p):%d\t",count1,count2,count3);
}
return 0;
}
程序测试:
asdfstrlen1(p):4 strlen2(p):4 strlen(p):4