字符串处理函数自定义

#include<stdio.h>
#include<math.h>
int str_len(char* str);
void str_connect(char str[],char str2[]);
void str_copy(char str[], char str2[]);
void str_daxie(char str[]);
void str_xiaoxie(char str[]);
int str_number(char str[]);
char* number_str(int number);
int str_strcmp(char str[],char str2[]);
void get_str(int a)
{
	char str[1000];
	char str2[1000];
	int number;
	switch(a)
	{
		case 1:
			printf("请输入字符串:\n");
			scanf("%s",&str);
			str_len(str);
			break;
		case 2:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			printf("请输入第二个字符串:\n");
			scanf("%s",&str2);
			str_connect(str,str2);
			puts(str);
			break;
		case 3:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			printf("请输入第二个字符串:\n");
			scanf("%s",&str2);
			str_copy(str,str2);
			break;
		case 4:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			printf("请输入第二个字符串:\n");
			scanf("%s",&str2);
			str_strcmp(str,str2);
			break;
		case 5:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			str_daxie(str);
			puts(str);
			break;
		case 6:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			str_xiaoxie(str);
			puts(str);
			break;
		case 7:
			printf("请输入第一个字符串:\n");
			scanf("%s",&str);
			str_number(str);
			break;
		case 8:
			printf("请输入第一个字符串:\n");
			scanf("%d",&number);
			number_str(number);
			break;
		case 9:break;
		default:printf("你的输入有误,请重新输入!");break;
	}
}
void show()
{
	int x=0;
	while(x!=9)
	{
	printf("1.字符串长度\n");
	printf("2.字符串连接\n");
	printf("3.字符串拷贝\n");
	printf("4.字符串比较\n");
	printf("5.字符串大写变小写\n");
	printf("6.字符串小写变大写\n");
	printf("7.字符串变数值\n");
	printf("8.数值变字符串\n");
	printf("9.退出系统\n");
	printf("请选择[1/2/3/4/5/6/7/8/9]\n");
	if(scanf("%d",&x)!=1)
	{
		printf("你的输入有误,程序将关闭...\n"); 
		break;
	}
	get_str(x);
	}
}
int str_len(char* str)
{
	int count = 0;
	while (*str++!= '\0')
	{
		count++;
	}
	printf("%d\n",count);
	return count;
}
void str_connect(char str[],char str2[])
{
	int size = str_len(str);
	int i;
	for (i = 0; i < size; i++)
	{
		str[i+size] = str2[i];
	}
	str[i + size] = '\0';
}
void str_copy(char str[], char str2[])
{
	int size = str_len(str2);
	int i;
	for ( i= 0; i < size; i++)
	{
		str[i] = str2[i];
	}
	str[i] = '\0';
}
void str_daxie(char str[])
{
	while (*str!= '\0')
	{
		if (*str >= 65 && *str <= 90)
		{
			*str = *str + 32;
		}
		str++;
	}
}
void str_xiaoxie(char str[])
{
	while (*str != '\0')
	{
		if (*str >= 97 && *str <= 122)
		{
			*str = *str - 32;
		}
		str++;
	}
}
int str_number(char str[])
{
	int size = str_len(str);
	int i;
	int number=0;
	int number2;
	for (i = 0; i < size; i++)
	{
		if (str[i] == 0)
		{
			continue;
		}
		number2 = str[i] - 48;
		number += number2 * pow(10, size - i - 1);
	}
	return number;
	
}
char* number_str(int number)
{
	int x=number,count=0;
	while (x != 0)
	{
		x = x / 10;
		count++;
	}
	int i;
	char a[count],tmp;
	for (i = 1; i <=count; i++)
	{
		x=pow(10,count-i);//求出数字有多少位
		tmp=(number/x%10)+48;
		a[i - 1] = tmp;
	}
	return a;
}
int str_strcmp(char str[],char str2[])
{
	int i;
	int size=str_len(str);
	int size2=str_len(str2);
	if(size>size2)
	{
		size=size;
	}
	else{
		size=size2;
	}
	for(i=0;i<size;i++)
	{
		if(str[i]<str2[i])
		{
			return -1;
		}
		else if(str[i]=str2[i])
		{
			return 0;
		}
		else{
			return 1;
		}
	}
}
int main()
{
	show();
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值