C语言 | 自定义字符串操作函数(附详细测试代码)

1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

1、字符串逆序函数

(1)方法一

char *STR_ReserveOrder(char *src_str,int str_len)
{
	char *dst_str = src_str;
	char temp;
	
	for(int i=0;i<str_len/2;i++)
	{
		temp = src_str[i];					//或者temp = *(src_str + i);
		src_str[i] = src_str[str_len-i-1];  //或者*(src_str + i) = *(src_str + str_len - i - 1);
		src_str[str_len-i-1] = temp;		//或者*(src_str + str_len - i - 1) = temp;
	}
	
	return (char*)dst_str;
}

(2)方法二

char *Str_ReverseOrder(char *src_str,int str_len)
{
	char *str1,*str2,temp;
	printf("Method 2!\n");
	str1 = src_str; 				//指向字符串的头
	str2 = src_str + str_len - 1;   //指向字符串的尾
	while(str1<str2)
	{
		temp = *str1;
		*str1 = *str2;
		*str2 = temp;
		str1++;
		str2--;
	}
	
	return str2;
}

 

测试结果如下:

 

2、求字符串长度

(1)方法一:运用计数的方式

int my_strlen(const char *str)
{
	int len_count = 0;		//长度计数值
	while(*str)
	{
		len_count++;
		str++;
	}
	
	return len_count;
}

(2)方法二:运用递归

int my_strlen(const char *str)
{
	if(*str=='\0')
		return 0;
	else 
		return my_strlen(str+1) + 1; 
}

(3)方法三:运用指针

int my_strlen(const char *str)
{
	if(*str=='\0')
		return 0;
	else 
		return my_strlen(str+1) + 1; 
}

测试结果如下:

 

3、字符串拷贝

char *my_strcpy(char *dest,char *src)
{
	assert(dest);
	assert(src);
	while(*dest++ = *src++);
	
	return dest;
}

测试结果如下:

 

 

4、字符串拼接

char *my_strcat(char *dest,char *src)
{
	assert(dest);
	assert(src);
	while(*dest!='\0')
	{
		dest++;
	}
	while(*dest++=*src++);
	
	return dest;
}

测试结果如下:

 

5、字符串比较

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

测试结果如下:

 

6、搜索一个字符串在另一个字符串中的第一次出现的位置

char *my_strstr(char *str, char *substr)
{
	char *p = str;
	char *q = substr;
	char *cur = NULL;

	assert(str);
	assert(substr);
	
	if(substr=='\0')
		return str;
	while(*p)
	{
		cur = p;
		while((*p)&&(*q)&&(*p==*q))
		{
			p++;
			q++;
		}
		if(*q=='\0')
			return cur;
		p = cur + 1;
		q = substr;
	}
	
	return NULL;
}

测试结果如下:


 

7、搜索一个字符在另一个字符串中的第一次出现的位置

char *my_strchr(char *str, char c)
{
	char *temp = str;
	
	assert(str);
	while(*temp)
	{
		if(*temp==c)
		{
			return temp;
		}
		temp++;
	}
	
	return NULL;
}

测试结果如下:

 

8、带长度控制的字符串拷贝

char *my_strncpy(char *dest, char *src, int maxlen)
{
	assert(dest);
	assert(src);
	
	while(maxlen--)
	{
		*dest++ = *src++;
	}
	if(*dest!='\0')
	{
		*dest = '\0';
	}
	
	return dest;
}

测试结果如下:


 

9、带长度控制的字符串拼接

char *my_strncat(char *dest, char *src, int maxlen)
{
	assert(dest);
	assert(src);
	
	while(*dest!='\0')
	{
		dest++;
	}
	while(maxlen--)
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';	//不要漏了这条语句
	
	return dest;
}

测试结果如下:


 

10、带长度控制的字符串比较

int my_strncmp(char *str1, char *str2, int maxlen)
{
	assert(str1);
	assert(str2);
	
	while(maxlen--)
	{
		while(*str1==*str2)
		{
			if(*str1=='\0')
			{
				return 0;
			}
			else
			{
				return *str1-*str2;
			}
		}
	}
	
	return 0;
}

测试结果如下:

 

11、完整的程序

/*----------------------------------------------------------------------------------------
	
	Program Explain:自定义字符串操作函数
    Create Date:2018.1.27 by lzn

----------------------------------------------------------------------------------------*/

#include <stdio.h>  
#include <string.h> 
#include <assert.h> 
#include <stdlib.h>

#define uint8 unsigned char
#define SIZE  256
// #define my_strlen_1  1
// #define my_strlen_2  2


//操作函数的声明
char *Str_ReverseOrder(char *src_str, int str_len);  	//字符串逆序
int my_strlen(const char *str);							//字符串长度
char *my_strcpy(char *dest, char *src);				 	//字符串拷贝
char *my_strcat(char *dest, char *src);					//字符串拼接
int my_strcmp(char *str1, char *str2);				 	//字符串比较
char *my_strstr(char *str, char *substr);            	//在串中查找指定字符串的第一次出现 
char *my_strchr(char *str, char c); 				 	//在串中查找指定字符的第一次出现 
char *my_strncpy(char *dest, char *src, int maxlen); 	//带长度限制的字符串拷贝
char *my_strncat(char *dest, char *src, int maxlen); 	//带长度限制的字符串拼接
int my_strncmp(char *str1, char *str2, int maxlen);  	//带长度限制的字符串比较
uint8 Bit_Reverse(uint8 chr);							//位转换
void ChrReplace(char *dest,char *src,char c1,char c2);  //字符替换
void StrReplace(char *dest,char *src,char *s1,char *s2);//字符串替换
void PrintfMenu(void);								 	//打印菜单
//测试函数声明
void Test1(void);		//"Str_ReverseOrder"函数测试
void Test2(void);		//"my_strlen"函数测试
void Test3(void);		//"my_strcpy"函数测试
void Test4(void);		//"my_strcat"函数测试
void Test5(void);		//"my_strcmp"函数测试
void Test6(void);		//"my_strstr"函数测试
void Test7(void);		//"my_strchr"函数测试
void Test8(void);		//"my_strncpy"函数测试
void Test9(void);		//"my_strncat"函数测试
void Test10(void);		//"my_strncmp"函数测试
void Test11(void);		//"Bit_Reverse"函数测试
void Test12(void);		//"ChrReplace"函数测试
void Test13(void);		//"StrReplace"函数测试

/*********************************************************************************
* Function Name    : main主函数
* Parameter		   : NULL
* Return Value     : 0 
* Function Explain : 
* Create Date      : 2018.1.27
**********************************************************************************/
int main(void)
{
	int cmd;

	while(1)
	{
		PrintfMenu();	  //菜单
		scanf("%d",&cmd); //菜单命令
		switch(cmd)
		{
			case 1:	Test1();	break;		//"Str_ReverseOrder"函数测试
			case 2:	Test2();	break;		//"my_strlen"函数测试
			case 3:	Test3();	break;		//"my_strcpy"函数测试
			case 4:	Test4();	break;		//"my_strcat"函数测试
			case 5: Test5();	break;		//"my_strcmp"函数测试
			case 6: Test6();	break;		//"my_strstr"函数测试
			case 7:	Test7();	break;		//"my_strchr"函数测试
			case 8:	Test8();	break;		//"my_strncpy"函数测试
			case 9:	Test9();	break;		//"my_strncat"函数测试
			case 10:Test10();	break;		//"my_strncmp"函数测试
			case 11:Test11();	break;		//"Bit_Reverse"函数测试
			case 12:Test12();	break;		//"ChrReplace"函数测试
			case 13:Test13();	break;		//"StrReplace"函数测试
			case 0:system("cls");break;	//清屏
			case -1:exit(0);break;			//退出
			default:
				printf("Input error!Please input again!\n");
				break;
		}
	}
	return 0;
}

/*********************************************************************************
* Function Name    : STR_ReserveOrder,字符串逆序函数
* Parameter		   : src_str:字符串  str_len:字符串长度
* Return Value     : dst_str:逆序之后得到的字符串
* Function Explain : 
* Create Date      : 2018.1.27
**********************************************************************************/
#if 0 //方法1
char *Str_ReverseOrder(char *src_str,int str_len)
{
	char *dst_str = src_str;
	char temp;
	printf("Method 1!\n");
	for(int i=0;i<str_len/2;i++)
	{
		temp = src_str[i];					//或者temp = *(src_str + i);
		src_str[i] = src_str[str_len-i-1];  //或者*(src_str + i) = *(src_str + str_len - i - 1);
		src_str[str_len-i-1] = temp;		//或者*(src_str + str_len - i - 1) = temp;
	}
	
	return (char*)dst_str;
}
#else  //方法2
char *Str_ReverseOrder(char *src_str,int str_len)
{
	char *str1,*str2,temp;
	printf("Method 2!\n");
	str1 = src_str; 				//指向字符串的头
	str2 = src_str + str_len - 1;   //指向字符串的尾
	while(str1<str2)
	{
		temp = *str1;
		*str1 = *str2;
		*str2 = temp;
		str1++;
		str2--;
	}
	
	return str2;
}

#endif

/*********************************************************************************
* Function Name    : my_strlen,求字符串长度
* Parameter		   : src_str:字符串  str_len:字符串长度
* Return Value     : dst_str:逆序之后得到的字符串
* Function Explain : 
* Create Date      : 2018.1.28 
**********************************************************************************/
#if my_strlen_1		//方式1:定义一个计数器
int my_strlen(const char *str)
{
	int len_count = 0;		//长度计数值
	while(*str)
	{
		len_count++;
		str++;
	}
	
	return len_count;
}
#elif my_strlen_2  //方式2:运用递归
int my_strlen(const char *str)
{
	if(*str=='\0')
		return 0;
	else 
		return my_strlen(str+1) + 1; 
}
#else			   //方式3:运用指针
int my_strlen(const char *str)
{
	const char *end = str;
	while(*end++);
	
	return end - str -1;
}
#endif

/*********************************************************************************
* Function Name    : my_strcpy,字符串拷贝函数
* Parameter		   : src_str:源字符串  dest:目标字符串
* Return Value     : 
* Function Explain : 
* Create Date      : 2018.1.30 
**********************************************************************************/
char *my_strcpy(char *dest, char *src)
{
	assert(dest);
	assert(src);
	if(!(dest&&src))
		return NULL;
	while(*dest++ = *src++);
	
	return dest;
}

/*********************************************************************************
* Function Name    : my_strcat,字符串拼接函数
* Parameter		   : src_str:源字符串  dest:目标字符串
* Return Value     : 
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
char *my_strcat(char *dest,char *src)
{
	assert(dest);
	assert(src);
	while(*dest!='\0')
	{
		dest++;
	}
	while(*dest++=*src++);
	
	return dest;
}

/*********************************************************************************
* Function Name    : my_strcmp,字符串比较函数
* Parameter		   : str1,str2
* Return Value     : 0:str1等于str2;<0:str1小于str2;>0:str1小于str2
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
int my_strcmp(char *str1,char *str2)
{
	while(*str1==*str2)
	{
		if(*str1=='\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	
	return *str1-*str2;
}

/*********************************************************************************
* Function Name    : my_strstr, 在str中查找substr的第一次出现的位置
* Parameter		   : str,substr
* Return Value     : 返回该位置的指针
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
char *my_strstr(char *str, char *substr)
{
	char *p = str;
	char *q = substr;
	char *cur = NULL;

	assert(str);
	assert(substr);
	
	if(substr=='\0')
		return str;
	while(*p)
	{
		cur = p;
		while((*p)&&(*q)&&(*p==*q))
		{
			p++;
			q++;
		}
		if(*q=='\0')
			return cur;
		p = cur + 1;
		q = substr;
	}
	
	return NULL;
}

/*********************************************************************************
* Function Name    : my_strchr, 在str中查找字符c第一次出现的位置
* Parameter		   : str,c
* Return Value     : 返回该位置的指针
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
#if 1		//方法1
char *my_strchr(char *str, char c)
{
	char *temp = str;
	
	assert(str);
	while(*temp)
	{
		if(*temp==c)
		{
			return temp;
		}
		temp++;
	}
	
	return NULL;
}
#else		//方法2
char *my_strchr(char *str, char c)
{
	while( (*str!='\0')&&(*str!=c) )
	{
		++str;
	}
	
	return *str==c?str:NULL;
	
	return NULL;
}
#endif

/*********************************************************************************
* Function Name    : my_strncpy, 在src中拷贝maxlen个字符到dest中
* Parameter		   : dest:目标字符串 src:源字符串 maxlen:字符个数
* Return Value     : 返回该位置的指针
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
char *my_strncpy(char *dest, char *src, int maxlen)
{
	assert(dest);
	assert(src);
	
	while(maxlen--)
	{
		*dest++ = *src++;
	}
	if(*dest!='\0')
	{
		*dest = '\0';
	}
	
	return dest;
}

/*********************************************************************************
* Function Name    : my_strncat, 拼接src中maxlen个字符到dest中尾部
* Parameter		   : dest:目标字符串 src:源字符串 maxlen:字符个数
* Return Value     : 返回该位置的指针
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
char *my_strncat(char *dest, char *src, int maxlen)
{
	assert(dest);
	assert(src);
	
	while(*dest!='\0')
	{
		dest++;
	}
	while(maxlen--)
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';	//不要漏了这条语句
	
	return dest;
}

/*********************************************************************************
* Function Name    : my_strncat, 拼接src中maxlen个字符到dest中尾部
* Parameter		   : dest:目标字符串 src:源字符串 maxlen:字符个数
* Return Value     : 返回该位置的指针
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
int my_strncmp(char *str1, char *str2, int maxlen)
{
	assert(str1);
	assert(str2);
	
	while(maxlen--)
	{
		while(*str1==*str2)
		{
			if(*str1=='\0')
			{
				return 0;
			}
			else
			{
				return *str1-*str2;
			}
		}
	}
	
	return 0;
}

/*********************************************************************************
* Function Name    : Bit_Reverse,位转换
* Parameter		   : chr:一个uint型的16进制数
* Return Value     : new_chr:新的16进制数
* Function Explain : 如输入aa(10101010),则输出55(01010101)
* Create Date      : 2018.2.6 
**********************************************************************************/
uint8 Bit_Reverse(uint8 chr)
{
	uint8 new_chr = 0;
	int bit = 8;
	while(bit)
	{
		bit--;
		new_chr |=((chr&1)<<bit);
		chr >>= 1;
	}
	
	return new_chr;
}

/*********************************************************************************
* Function Name    : ChrReplace,字符替换
* Parameter		   : dest:目标字符串 src:源字符串 c1:旧字符 c2:新字符
* Return Value     : 
* Function Explain : 
* Create Date      : 2018.2.19 
**********************************************************************************/
void ChrReplace(char *dest, char *src, char c1, char c2)
{
	char *p_src = src;
	for(int i=0;i<strlen(p_src);i++)
	{
		if(c1==p_src[i])
		{
			p_src[i] = c2;
		}
	}
	strcpy(dest,p_src);
}

/*********************************************************************************
* Function Name    : ChrReplace,字符替换
* Parameter		   : dest:目标字符串 src:源字符串 s1:旧字符串 c2:新字符串
* Return Value     : 
* Function Explain : 
* Create Date      : 2018.2.19 
**********************************************************************************/
void StrReplace(char *dest,char *src,char *s1,char *s2)
{
	char *p_src = src;
	char *q = NULL;
	
	while((q=strstr(p_src, s1))!=NULL)
	{
		printf("%s\n",q);
		strncpy(dest, p_src, q-p_src);  //把q前面的字符串拷贝到dest中
		dest[q-p_src] = '\0';			//添加结束符
		strcat(dest, s2);				//把s2拼接到dest的末尾
		strcat(dest, q+strlen(s1));		//把s1后面的字符串拼接到dest的末尾
		strcpy(p_src, dest);
	}
	strcpy(dest, p_src);
}

/*********************************************************************************
* Function Name    : PrintfMenu,打印菜单
* Parameter		   : void
* Return Value     : NULL
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void PrintfMenu(void)
{
	printf("------------------------Menu----------------------------\n");
	printf("[01] Function Str_ReverseOrder test;\n");
	printf("[02] Function my_strlen test;\n");
	printf("[03] Function my_strcpy test;\n");
	printf("[04] Function my_strcat test;\n");
	printf("[05] Function my_strcmp test;\n");
	printf("[06] Function my_strstr test;\n");
	printf("[07] Funciton my_strchr test;\n");
	printf("[08] Function my_strncpy test;\n");
	printf("[09] Function my_strncat test;\n");
	printf("[10] Function my_strncmp test;\n");
	printf("[11] Function Bit_Reverse test;\n");
	printf("[12] Function ChrReplace test;\n");
	printf("[13] Function StrReplace test;\n");
	printf("[00]  Clear screen;\n");
	printf("[-1]  Exit;\n");
	printf("--------------------------------------------------------\n");
	printf("Enter your choice: ");
}

/* ====================================以下是测试函数============================== */
/*********************************************************************************
* Function Name    : Test1, 测试"Str_ReverseOrder"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test1(void)	
{
	char str[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string:");
	scanf("%s",str);
	Str_ReverseOrder(str, strlen(str));
	printf("Afer reserve order string:%s\n",str);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test2, 测试"my_strlen"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test2(void)	
{
	char str[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string:");
	scanf("%s",str);
	printf("The string length is:%d\n",my_strlen(str));
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test3, 测试"my_strcpy"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test3(void)	
{
	char str[SIZE], dest[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string:");
	scanf("%s",str);
	my_strcpy(dest,str);
	printf("After my_strcpy,the string is:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test4, 测试"my_strcat"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test4(void)	
{
	char str[SIZE], dest[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string1 and string2(exp:abc cde):");
	scanf("%s %s",dest,str);
	my_strcat(dest,str);
	printf("After my_strcat,the string is:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test5, 测试"my_strcmp"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test5(void)	
{
	char str1[SIZE],str2[SIZE];
	int ret;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string1 and string2(exp:aaa bbb):");
	scanf("%s %s",str1,str2);
	ret = my_strcmp(str1,str2);
	if(ret>0)
	{
		printf("string1 is greater than string2\n"); 
	}
	else if(ret<0)
	{
		printf("string1 is less than string2\n"); 
	}
	else
	{
		printf("string1 is equal to string2\n"); 
	}
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test6, 测试"my_strstr"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test6(void)	
{
	char str[SIZE], substr[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string and substring(exp:abcdef cd):");
	scanf("%s %s",str,substr);
	printf("The substring is: %s\n", my_strstr(str,substr)); 
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test7, 测试"my_strchr"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test7(void)	
{
	char str[SIZE];
	uint8 chr;
	char *ptr;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string and char(exp:abcdef c):");
	scanf("%s %c",str,&chr);
	ptr = my_strchr(str,chr);
	 if (ptr) 
	   printf("The character %c is at position: %d\n", chr, ptr-str); 
	else 
	   printf("The character was not found\n"); 
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test8, 测试"my_strncpy"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test8(void)	
{
	char str[SIZE], dest[SIZE];
	int len;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string and strlen(exp:hello 3):");
	scanf("%s %d",str,&len);
	my_strncpy(dest,str,len);
	printf("After my_strncpy,the string is:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test9, 测试"my_strncat"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test9(void)	
{
	char str[SIZE], dest[SIZE];
	int len;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string1 and string2 and string2 len(exp:abc cdefg 3):");
	scanf("%s %s %d",dest,str,&len);
	my_strncat(dest,str,len);
	printf("After my_strncat,the string is:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test10, 测试"strncmp"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test10(void)	
{
	char str1[SIZE],str2[SIZE];
	int len;
	int ret;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input string1 and string2 and string2 len(exp:aaabbb bbbccc 3):");
	scanf("%s %s %d",str1,str2,&len);
	ret = strncmp(str1,str2,len);
	if(ret>0)
	{
		printf("string1 is greater than string2\n"); 
	}
	else if(ret<0)
	{
		printf("string1 is less than string2\n"); 
	}
	else
	{
		printf("string1 is equal to string2\n"); 
	}
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test11, 测试"Bit_Reverse"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test11(void)	
{
	uint8 chr;
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	printf("Please input a chr(exp:aa):");
	scanf("%x",&chr);
	printf("%x\n",Bit_Reverse(chr));
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test12, 测试"ChrReplace"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test12(void)	
{
	char src[SIZE] = "ab66 c66d 66ef hello world";
	char dest[SIZE];
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	ChrReplace(dest, src, ' ', '_' ); //把src里所有' '字符替换成'_'字符,结果存在dest中 
	printf("Final string:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

/*********************************************************************************
* Function Name    : Test13, 测试"StrReplace"函数
* Parameter		   : void
* Return Value     : void
* Function Explain : 
* Create Date      : 2018.1.29 
**********************************************************************************/
void Test13(void)	
{
	char src[SIZE] = "ab66 c66d 66ef hello world";
	char dest[SIZE];
	
	printf("--------------------%s start!--------------------\n",__FUNCTION__);
	StrReplace(dest, src, "66", "****"); //把src里所有"66"字符替换成"****"字符,结果存在dest中 
	printf("Final string:%s\n",dest);
	scanf("%*[^\n]");scanf("%*c");	//清空缓冲区
	printf("--------------------%s end!--------------------\n",__FUNCTION__);
	printf("\n");
}

 

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式大杂烩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值