strlen strcmp strcat strcpy strncpy strstr strchar函数的实现

 

 

 

 

                                                                                                                                                                                                                                                                                                           strlen的实现

#include <iostream>
using namespace std;

int my_strlen(const char * str)
{
	int count = 0;
	while (*str++)
	{
		count++;
	}
	return count;
}

int main()
{
	char test[] = " abcd ";
	cout << my_strlen(test) << endl;

	system("pause");
	return 0;
}

strcmp 的实现

#include <iostream>
#include "assert.h"
using namespace std;

int my_strcmp(const char * str1, const char * str2)
{
	assert((str1 != NULL) && (str2 != NULL));

	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	
	return (unsigned char)*str1 - (unsigned char)*str2;
}

int main()
{
	char test1[] = "bbcd";
	char test2[] = "abcd";
	char test3[] = "abcd";
	cout << my_strcmp(test1, test2) << endl;
	cout << my_strcmp(test2, test3) << endl;
	system("pause");
	return 0;
}

strcat的实现


#include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;

char * my_strcat( char * str1, char * str2)
{
	assert(str1 != NULL);
	assert(str2 != NULL);

	char * tmp = str1;
	
	while (*str1 != '\0')
	{
		str1++;
	}
	while (*str2 != '\0')
	{
		*str1++ = *str2++;
	}
	*str1 = '\0';
	return tmp;

}


int main()
{
	char test1[100] = "abcd";
	char test2[] = "cd";

	cout << my_strcat(test1, test2) << endl;
	system("pause");
	return 0;
}


strcpy的实现

#include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;

char * my_strcpy(const char * src, char * dst)
{
	assert(src != NULL);
	assert(dst != NULL);

	char * tmp = dst;
	while (*src != '\0')
	{
		*dst = *src;
		dst++;
		src++;
	}
	return tmp;

}


int main()
{
	char test1[] = "abcd";
	char test2[sizeof(test1)] = "";

	cout << my_strcpy(test1, test2) << endl;
	system("pause");
	return 0;
}


strncpy的实现

#include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;

char * my_strncpy(const char * src, char * dst, unsigned int n)
{
	assert(src != NULL);
	assert(dst != NULL);
	int i = 0;
	int target = 0;
	char * tmp = dst;
	int len = strlen(src);
	if (n >= len)
	{
		target = len;
	}
	else
	{
		target = n;
	}

	for ( i = 0; i < target; i++)
	{
		dst[i] = src[i];
	}
	dst[i] = '\0';

	return tmp;

}


int main()
{
	char test1[] = "abcd";
	char test2[sizeof(test1)] = "";

	cout << my_strncpy(test1, test2, 2) << endl;
	system("pause");
	return 0;
}

strstr的实现


#include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;

int pos = 0;
const char * my_strstr(const char * str1, const char * str2)
{
	assert(str1 != NULL);
	assert(str2 != NULL);

	while (*str1 != '\0')
	{
		const char * p = str1;
		const char * q = str2;
		const char * res = NULL;
		pos++;
		if (*p == *q)
		{
			res = p;
			while (*p && *q && *q++ == *p++)
				;
			if (*q == '\0')
			{
				return (char *)res;
			}

		}
		str1++;
	}
	return NULL;

}



int main()
{
	const char test1[5] = "abcd";
	const char test2[3] = "c";

	if (my_strstr(test1, test2) == NULL)
	{
		cout << "cannot find!" << endl;
	}
	else
	{
		cout << "find, the pos is " << pos << endl;
		cout << my_strstr(test1, test2) << endl;
	}
	system("pause");
	return 0;
}

strchar的实现


#include <iostream>
#include "string.h"
#include "assert.h"
using namespace std;
int pos = 0;
const char * my_strchar(const char * str1, const char c)
{
	assert(str1 != NULL);
	
	while (*str1 != '\0')
	{
		const char * p = str1;
		const char * res = NULL;
		pos++;
		if (*p == c)
		{		
				res = p;
				
				return res;
		}
		str1++;
	}
	return NULL;
}

int main()
{
	const char test1[5] = "abcd";
	char test2 = 'e';
	if (my_strchar(test1, test2) == NULL)
	{
		cout << "cannot find!" << endl;
	}
	else
	{
		cout << "find, the pos is " << pos << endl;
	}
	system("pause");
	return 0;
}


















 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
strlenstrcpystrcmpstrcat都是C语言中的字符串处理函数。其中strlen是用来计算字符串的长度的函数,其语法为:size_t strlen(const char *str),其中str表示需要计算长度的字符串。该函数的返回值为一个size_t类型的无符号整数,表示字符串的长度,不包括空字符('\0')。例如,若str为"hello",则strlen(str)的结果为5。 strcpy是用于将一个字符串复制到另一个字符串中的函数。其语法为:char *strcpy(char *dest, const char *src),其中dest表示目标字符串的地址,src表示需要复制的源字符串的地址。该函数会将src中的内容复制到dest中,并返回dest的值。例如,若src为"hello",dest为一个长度为10的字符数组,则执行strcpy(dest, src)后,dest数组中就存储了"hello"这个字符串。 strcmp是用于比较两个字符串是否相等的函数。其语法为:int strcmp(const char *s1, const char *s2),其中s1和s2表示需要比较的两个字符串。该函数会先比较s1和s2的第一个字符,若相同则继续比较后面的字符,直到不相等为止。返回值为一个整数,若s1>s2则返回正整数,若s1<s2则返回负整数,若s1=s2则返回0。例如,若s1为"abc",s2为"abd",则执行strcmp(s1, s2)后,返回的值为负整数。 strcat是用于将两个字符串连接起来的函数。其语法为:char *strcat(char *dest, const char *src),其中dest表示目标字符串的地址,src表示需要添加的源字符串的地址。该函数会将src中的内容添加到dest的末尾,并返回dest的值。例如,若dest为"hello",src为"world",则执行strcat(dest, src)后,dest数组中存储了"helloworld"这个字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值