(C语言)自定义字符串处理函数

自定义字符串处理函数,函数原型如下:

  1. 求字符串的长度:int udf_strlen(char s[]);
  2. 两个字符串拼接(将字符串t拼接到字符串s之后):void udf_strcat(char s[],char t[]);
  3. 字符串拷贝(将字符串t拷贝到字符串s中):void udf_strcpy(char s[],char t[]);
  4. 字符串比较大小(相等返回0,小于返回-1,大于返回1):int udf_strcmp(char s[],char t[]);
  5. 求字符串的子串(求字符串s中从指定位置startpos开始截取长度为length的子串,存入字符数组t中并返回):void udf_substr(char s[],char t[],int startpos,int length);
#include<stdio.h>
int udf_strlen(char s[]);
void udf_strcat(char s[],char t[]);
void udf_strcpy(char s[],char t[]);
int udf_strcmp(char s[],char t[]);
void udf_substr(char s[],char t[],int idx1,int idx2);//此处没有按照题目的设置,采用起始下标和结束下标截出字串 

int udf_strlen(char s[])
{
	int i;
	for(i=0;s[i]!='\0';i++);
	return i;
}

//将字符串t拼接到字符串s之后
//s长度不够时会导致越界!
void udf_strcat(char s[],char t[])
{
	for(;*s!='\0';s++);
	do
	{
		*(s++)=*(t++);//同时实现赋值和移动指针 
	}while(*(t-1)!='\0');
}

//将字符串t拷贝到字符串s中
void udf_strcpy(char s[],char t[])
{
	do
	{
		*(s++)=*(t++);//同时实现赋值和移动指针 
	}while(*(t-1)!='\0');
}

//相等返回0,s小于t返回-1,s大于t返回1
int udf_strcmp(char s[],char t[])
{
	int ret;
	do
	{
		ret=*s-*t;
	}while(!ret&&*(s++)!='\0'&&*(t++)!='\0');//循环继续的条件:之前比较的两个元素相同且字符串没有结束,同时实现移动指针 
	if(ret>0)return 1;
	else if(ret<0)return -1;
	else if(ret=0)return 0;
}

//idx1 和 idx2 分别是开始和结束元素的下标 
void udf_substr(char s[],char t[],int idx1,int idx2)
{
	int i,j;
	for(i=idx1,j=0;i<=idx2;i++,j++)
	{
		t[j]=s[i];
	}	
	t[j+1]='\0';
} 

int main()
{
	char a[7]={"d125"};
	char b[6]={"d155"};
	char t[10];
	udf_substr(a,t,0,0);	
//	printf("%d",udf_strcmp(a,b));
//	udf_strcat(b,a);
//	udf_strcpy(b,a);
//	printf("%s",b);
//	printf("%d",b[3]);
//	printf("%d",a[3]);
	return 0;
}
上一篇:自定义UDF之自定义标识分组


下一篇:MySQL用户自定义函数