c语言字符串内大写字母,小写字母,数字的判断,动态数组的使用

#define _CRT_SECURE_NO_DEPRECATE  1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>

#define NUM 10//数组初始大小
//判断是否是大写字母
bool _CapitalLetters(char c)
{
	if (c >= 'A' && c <= 'Z')
	{
		return true;
	}
	return false;
}
//判断是否是小写字母
bool _LowercaseLetters(char c)
{
	if (c >= 'a' && c <= 'z')
	{
		return true;
	}
	return false;
}
//判断是否是数字
bool _Digital(char c)
{
	if (c >= '0' && c <= '9')
	{
		return true;
	}
	return false;
}
int main()
{
	int n = 0;//当前数组元素个数
	int max = NUM;//当前数组最大值
	char* buff = malloc(sizeof(char)*NUM);
	if (buff == NULL)
	{
		perror("创建数组失败buff");
		exit(-1);
	}
	int CapitalLetters = 0;//大写字母
	int LowercaseLetters = 0;//小写字母
	int Digital = 0;//数字
	int Len = 0;//字符串长度
	int Other = 0;//其他
	printf("请输入字符串:");
	char c;//临时字符
	while (c=getchar())//获取一个字符
	{
		if (n==max)//当元素满了时候
		{
			char* p = realloc(buff, 2 * max);//扩容数组为两倍
			if (p == NULL)
			{
				perror("扩容失败");
				exit(-1);
			}
			else
			{
				buff = p;//获取扩容后的指针
				max = 2 * max;//扩容为两倍
			}
		}
		if (c == '\n')//获取到换行标志退出循环
		{
			buff[n] = '\0';//打上字符串结尾标志
			break;//字符串输入完成
		}
		else
		{
			buff[n] = c;//将元素放入数组
		}
		n++;//元素+1
	}
	Len = strlen(buff);//求字符串长度
	for (size_t i = 0; i < Len; i++)
	{
		if (_CapitalLetters(buff[i]))//判断大写字母
		{
			CapitalLetters++;
		}
		else if (_LowercaseLetters(buff[i]))//判断小写字母
		{
			LowercaseLetters++;
		}
		else if (_Digital(buff[i]))//判断是否是数字
		{
			Digital++;
		}
	}
	Other = Len - CapitalLetters - LowercaseLetters - Digital;//计算其他字符
	printf("字符串长度:%d\n大写字母个数:%d\n小写字母个数:%d\n数字个数:%d\n其他字符个数:%d\n",Len, CapitalLetters, LowercaseLetters, Digital, Other);
	free(buff);//释放内存空间
	buff = NULL;
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值