1. 程式人生 > >模擬實現strchr和strrchr

模擬實現strchr和strrchr

模擬實現strchr()

原型char *strchr( const char *string, char ch );

所在庫名:#include <string.h>

功能:找出在字串str中第一次出項字元ch的位置,找到就返回該字元位置的指標(也就是返回該字元在字串中的地址的位置),找不到就返回空指標(就是NULL)

程式碼如下:

char  *My_strchr(char const *arr, char ch)
{

	assert(arr);
	while (*arr != '\0')
	{
		if (*arr == ch)
		{
			return arr;
		}
		arr++;
	}
	return NULL;
}

測試函式:

#include<stdio.h>
#include<windows.h>
#include<assert.h>

int main()
{
	char arr[] = "abccd";
	printf("%s\n", My_strchr(arr, 'c'));
	system("pause");
	return 0;
}

結果:


注意:注意返回字串包含我們ch字元。

模擬實現strrchr()

原型char *strrchr( const char *string, char ch );

所在庫名#include <string.h>

功能:找出在字串str中最後一次出項字元ch的位置,找到就返回該字元位置的指標(也就是返回該字元在字串中的地址的位置),找不到就返回空指標(就是NULL)


和上面strchr不同之處就在於返回的位置不同!

程式碼如下:

char const  *My_strrchr(char  const  *arr, char ch)
{
	char *pos = 0;
	assert(arr);
	while (*arr)
	{
		if (*arr == ch)
		{
			pos = arr;
		}
		arr++;
	}
	if (pos != 0)
		return pos;
	else
		return NULL;
}

測試函式:
#include<stdio.h>
#include<windows.h>
#include<assert.h>

int main()
{
	char arr[] = "abcccd";
	printf("%s\n",My_strrchr(arr, 'c')); 
	system("pause");
	return 0;
}
結果:


看!這裡返回的是最後一次出現C的位置