【C语言】字符串处理自定义函数

前言:

字符串是我们接触得比较频繁的一种数据类型,通常我们会调用<string.h>头文件里的函数进行字符串处理的相关操作,那么我们能否自己写自定义函数来实现相应的功能呢?接下来我们就来介绍一些常见的字符串处理自定义函数,相信通过下面的学习大家一定会对字符串处理有更加深刻的理解!


常见的字符串处理:

1、字符串求长度

#include <stdio.h>

int Mystrlen1(const char *str)
{
	int i=0;
	while(*(str++)!='\0')
	{
		i++;	
	}
	
	return i;
}

int Mystrlen2(const char *str)
{
	int i;
	for(i=0;*(str++)!='\0';i++);
	
	return i;
}

int main()
{
	char a[100];
	scanf("%s",a);
	printf("%d\n",Mystrlen1(a));
	printf("%d\n",Mystrlen2(a));
}

运行结果:

     

2、字符串拷贝(复制)

#include <stdio.h>

void Mystrcpy1(char *des,char *src)
{
	while(*src!='\0')
	{
		*(des++)=*(src++);
	}
	*des='\0';
}

void Mystrcpy2(char *des,char *src)
{
	int i;
	for(i=0;*src!='\0';i++)
	{
		*(des++)=*(src++);
	}
    *des='\0';
}

void Mystrcpy3(char *des,char *src)
{
	while(	*(des++)=*(src++));

}

int main()
{
	char a[100]="abcd";
	char b[100]="123";
	Mystrcpy1(a,b);
	printf("%s\n",a);
	
	char c[100]="abcd";
	char d[100]="123";
	Mystrcpy2(c,d);
	printf("%s\n",c);
	
	char e[100]="abcd";
	char f[100]="123";
	Mystrcpy3(e,f);
	printf("%s\n",e);

}

运行结果:

3、字符串链接 

#include <stdio.h>

void Mystrcat(char *des,const char *src)
{
	while(*des!='\0')
	{
		des++;
	}
	while(*src!='\0')
	{
		*des++=*src++;
	}
	*des='\0';
}

int main()
{
	char a[100]="abcd";
	char b[100]="123";
	Mystrcat(a,b);
	printf("%s\n",a);

}

运行结果:

4、字符串比较

#include <stdio.h>

int Mystrcmp(const char *str1,const char *str2)
{
	while(*str1==*str2 && *str1!='\0')
	{
		str1++;
		str2++;
	}
	if(*str1=='\0'&&*str2=='\0')
	{
		return 0;
	}
	else 
	{
		return *str1-*str2;
	}
}
int main()
{
	printf("%d\n",Mystrcmp("abc","ab"));
	printf("%d\n",Mystrcmp("ab","abc"));
	printf("%d\n",Mystrcmp("abc","abd"));
	printf("%d\n",Mystrcmp("ab","ab"));
	printf("%d\n",Mystrcmp("abad","abc"));
}

运行结果:

5、字符串逆序

#include <stdio.h> 

void Reverse_str(char *str)
{
	char *p;
	char tmp;
	for(p=str;*p!='\0';p++) ;
	p--;
	while(str<p)
	{
		tmp=*str;
		*str=*p;
		*p=tmp;
		str++;
		p--;
	}
}

int main()
{
	char str1[]="abc" ;
	Reverse_str(str1);
	printf("%s\n",str1);
	return 0;
}

运行结果:

 6、字符串转数字(“123”->123, "a123"->0,"123x4->123)

#include <stdio.h>
#include <ctype.h>

int Myatoi(const char *str)
{
	int sum = 0;
	while(isdigit(*str))//判断是否是数字
	{
		sum = sum*10 + (*str-'0');
		str++;
	}
	return sum;
}

int main()
{
	char str1[]="123" ;
	char str2[]="a123" ;
	char str3[]="12x3" ;
	printf("%d\n",Myatoi(str1));
	printf("%d\n",Myatoi(str2));
	printf("%d\n",Myatoi(str3));
	return 0;
}

 运行结果:

7、数字转字符串

#include <stdio.h> 

void Reverse_str(char *str)
{
	char *p;
	char tmp;
	for(p=str;*p!='\0';p++) ;
    p--;
	while(str<p)
	{
		tmp=*str;
		*str=*p;
		*p=tmp;
		str++;
		p--;
	}
}

void Myitoa(char *str,int n)//12345
{
	int i = 0;
	do
	{
		str[i++] = n%10 + '0';
		n /= 10;
	}while(n != 0);
	str[i] = '\0';

	Reverse_str(str);
}

int main()
{
	int num=123;
	char str[100];
	Myitoa(str,123);
	printf("%s",str);
}

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值