1. 程式人生 > >面試題 模擬實現strlen函式的3種方法。

面試題 模擬實現strlen函式的3種方法。

第一種方法是用計數器模擬實現strlen函式。
#include<stdio.h>
#include<assert.h>
int my_strlen(const char *str)
{
	int count = 0;
	assert(str!=NULL);
	while(*str!='\0')
	{
		str++;
		count++;
	}
	return count;
}
int main()
{
	int ret = 0;
	char arr[10]="abcdefgh";
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}
第二種方法是用指標減指標的方法模擬實現strlen函式。
#include<stdio.h>
int my_strlen(const char *str)
{
	const char *p = str;
	while(*p!='\0')
	{
		p++;
	}
	return p-str;
}
int main()
{
	int ret = 0;
	char arr[10]="abcdefgh";
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}
第三種是用函式遞迴的方法模擬實現strlen函式。
#include<stdio.h>
int my_strlen(const char *str)
{
	if(*str=='\0')
		return 0;
	else
	return 1+my_strlen(str+1);
}
int main()
{
	int ret = 0;
	char arr[10]="abcdefgh";
	ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}
三種方法的結果都是: