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

本文提供了C++中几个常用字符串函数的手动实现代码,包括strlen、strcmp、strcat、strcpy和strncpy等,并附带了strstr和strchr的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 

                                                                                                                                                                                                                                                                                                           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;
}


















 

 

 

 

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值