⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strlib.c

📁 用C语言实现的字符型的菜单界面
💻 C
📖 第 1 页 / 共 3 页
字号:
 * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *str_tolower(char *string){	char *ptr;	int  cunt,len;	len=strlen(string);	ptr=string;	for(cunt=0;cunt<len;cunt++)	{		*ptr++=tolower(*ptr);	}	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 把可以转换的字符转成大写. * Argument: *           char *ch - 字符串. * Return  :  *           char - 字符.                                   * Comment : 系统的 islower(ch) 函数在 ch>0xe0 时也返回 2 , *           导致 toupper(ch) 函数错误. *----------------------------------------------------------------------------*/my_toupper(char ch){	if( (ch >= 'a') && (ch <= 'z'))		ch = ch - 'a' + 'A';	return(ch);}/*----------------------------------------------------------------------------* * FUNCTION: 把可以转换的字符转成小写. * Argument: *           char *ch - 字符. * Return  :  *           char - 字符.                                   * Comment : 系统的 islower(ch) 函数在 ch>0xe0 时也返回 2 , *           导致 tolower(ch) 函数错误. *----------------------------------------------------------------------------*/my_tolower(char ch){	if( (ch >= 'A') && (ch <= 'Z'))		ch = ch - 'A' + 'a';	return(ch);}/******************************************************************************  * <第二章> 字符串转换函数.                                                   * ******************************************************************************//*----------------------------------------------------------------------------* * FUNCTION: 浮点数转成字串. * Argument: *           double value - 浮点数. *           char *string - 字符串. *           int dec - 小数点位置. *           int width - 浮点数宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *ftoa(double value,char *string,int dec,int width){	char *ptr,buff[2];	int i,j,len;	ptr=(char *)fcvt(value,dec,&i,&j);	len=strlen(ptr);	if(i<1)	{		ins_str(ptr,0,1-i,"0000000000");		len=len+1-i;		i=1;	}	if(j)	{		len++;		strcpy(buff,"-");	}	else		*buff='\0';	if(dec>0)		len++;	*string='\0';	strcatm(string,space(width-len),buff,ptr,NULL);	if(dec>0)		ins_str(string,width-dec-1,1,".");	*(string+width)='\0';	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 长整数转成字串. * Argument: *           long value - 长整数. *           char *string - 字符串. *           int ch - 空格的替换字符. *           int width - 长整数宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *ltoa(long value,char *string,int ch,int width){	char buffer[20];	strcpy(string,ftoa((double)value,buffer,0,width));	strcce(string,' ',(char)ch);	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 整型转成字串. * Argument: *           int value - 整数. *           char *string - 字符串. *           int ch - 空格的替换字符. *           int width - 整数宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *itoa(int value,char *string,int ch,int width){	char buffer[16];	strcpy(string,ftoa((double)value,buffer,0,width));	strcce(string,' ',(char)ch);	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 无符号长整型转成字串. * Argument: *           unsigned long value - 无符号长整数. *           char *string - 字符串. *           int ch - 空格的替换字符. *           int width - 无符号长整数宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *ultoa(unsigned long value,char *string,int ch,int width){	char buffer[20];	strcpy(string,ftoa((double)value,buffer,0,width));	strcce(string,' ',(char)ch);	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 无符号整型转成字串. * Argument: *           unsigned int value - 无符号整数. *           char *string - 字符串. *           int ch - 空格的替换字符. *           int width - 无符号整数宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *uitoa(unsigned int value,char *string,int ch,int width){	char buffer[16];	strcpy(string,ftoa((double)value,buffer,0,width));	strcce(string,' ',(char)ch);	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 数字字串转成带逗号分隔的字串(3位一组). * Argument: *           char *string - 字符串. *           int dec - 小数点位置. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *fstr_disp_buf(char *string,int dec){	static char buff[30];	char c;	int len,i,j;	i=21;	len=strlen(string)-dec-1;	if(dec==0)	{		len++;		*(buff+i)='\0';	}	else		strcpy(buff+i,substr(string,len,dec+1));	i--;	for(j=0;j<len;j++)	{		c=*(string+len-j-1);		if(c=='-'||c=='+')		{			*(buff+i)=c;			i--;			if(j%3==0&&j!=0)			{				*(buff+i)=' ';				i--;			}		}		else		{			if(j%3==0&&j!=0)			{				if(isdigit(c))					*(buff+i)=',';				else					*(buff+i)=' ';				i--;			}			*(buff+i)=c;			i--;		}	}	return(buff+i+1);}/*----------------------------------------------------------------------------* * FUNCTION: 浮点数转成带逗号分隔的字串(3位一组). * Argument: *           double value - 浮点数. *           char *string - 字符串. *           int dec - 小数点位置. *           int width - 数的宽度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *fstr_disp(double value,char *string,int dec,int width){	char buff[31];	ftoa(value,buff,dec,width);	strcpy(string,fstr_disp_buf(buff,dec));	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 双精度浮点数转成带逗号分隔的字串(3位一组). * Argument: *           double je - 浮点数. *           char *str - 字符串. *           int bit - 小数点位置. *           int len - 长度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *dtos(double je,char *str,int bit,int len){	int num,n,m,cunt;	char string[31];	if(bit>=len) return("");	if(fzero_test(je,bit))	{		if(bit)			n=bit+1;		else	n=0;		num=len-n;		m=0;		if(num%3==0&&num>0) m--;		while(num/3)		{ 			num-=3;			m++;		}		if(n) n--;		if(n%3==0&&n>0) m--;		while(n/3)		{			n-=3; 			m++;		}		strcpy(str,space(m+len));	}	else		strcpy(str,fstr_disp(je,string,bit,len));	return(str);}/*----------------------------------------------------------------------------* * FUNCTION: 浮点数转成带逗号分隔的字串(3位一组). * Argument: *           double je - 浮点数. *           char *str - 字符串. *           int bit - 小数点位置. *           int len - 长度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *ftos(double je,char *str,int bit,int len){	char string[30];	if(fzero_test(je,bit))		strcpy(str,space(len));	else	strcpy(str,ftoa(je,string,bit,len));	return(str);}/*----------------------------------------------------------------------------* * FUNCTION: 整数转成带逗号分隔的字串(3位一组). * Argument: *           int bs - 整数. *           char *str - 字符串. *           int c - 位置. *           int len - 长度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *itos(int bs,char *str,int c,int len){	char string[10];	if(bs)		strcpy(str,itoa(bs,string,c,len));	else	strcpy(str,space(len));	return(str);}/*----------------------------------------------------------------------------* * FUNCTION: 长整数转成带逗号分隔的字串(3位一组). * Argument: *           int bs - 长整数. *           char *str - 字符串. *           int c - 位置. *           int len - 长度. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *ltos(long bs,char *str,int c,int len){	char string[12];	if(bs)		strcpy(str,ltoa(bs,string,c,len));	else	strcpy(str,space(len));	return(str);}/*----------------------------------------------------------------------------* * FUNCTION: 浮点数转成数字大写汉字字串. * Argument: *           double value - 浮点数. *           char *string - 字符串. * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *fstr_dx(double value,char *string){	char *ptr;	int c,cunt,len,sign=FALSE;	*string='\0';	if(!fzero_test(value,2))	{		if(value<0.0)			value=-value;		ptr=(char *)fcvt(value,2,&cunt,&cunt);		strrev(ptr);		if(*ptr=='0')			strcat(string,"整");		for(cunt=0;(c=*(ptr+cunt));cunt++)		{			c=c-'0';			if(c)			{				len=strlen(string)-2;				if(cunt==10&&memcmp(string+len,"万",2)==0)					*(string+len)='\0';				strcat(string,substr(DXJW,cunt*2,2));				strcat(string,substr(DXSZ,c*2,2));				sign=TRUE;			}			else			{				if(sign)				{					strcat(string,"零");					sign=FALSE;				}				if(cunt==2||cunt==6||cunt==10)				{					len=strlen(string)-2;					if(cunt==10&&memcmp(string+len,"万",2)==0)						*(string+len)='\0';					strcat(string,substr(DXJW,cunt*2,2));				}			}		}		len=strlen(string)-2;		for(cunt=0;cunt<len/2;cunt+=2)		{			c=len-cunt;			memcpy(ptr,string+cunt,2);			memcpy(string+cunt,string+c,2);			memcpy(string+c,ptr,2);		}	}	else		strcat(string,"零元整");	return(string);}/*----------------------------------------------------------------------------* * FUNCTION:  * Argument: *           char *string - 字符串. *           char c - . * Return  :  *           char * - 字符串指针.                                   *----------------------------------------------------------------------------*/char *stos_ac(char *string,char c){	int len,i=0;	len=strlen(string);	for(i=0;i<len;i++)	{		if(*(string+i)!=' ')		{			if(i)				*(string+i-1)=c;			break;		}	}	return(string);}/*----------------------------------------------------------------------------* * FUNCTION: 测试浮点数值在截至小数点后某位的值是否为零. * Argument: *           double value - 浮点数. *           int dec - 小数点位置. * Return  :  *           TRUE - 值为零.                                   *           FALSE - 值不为零.                                   *----------------------------------------------------------------------------*/fzero_test(double f,int dec){	char *ptr,c;	int cunt;	ptr=(char *)fcvt(f,dec,&cunt,&cunt);	for(cunt=0;(c=*(ptr+cunt));cunt++)	{		if(c!='0')			return(FALSE);	}	return(TRUE);}/*----------------------------------------------------------------------------* * FUNCTION: 测试一子字串child在string中的位置(1...n). * Argument: *           char *string - 字符串. *           char *child - 字符串. * Return  :  *           >0 - 子串的位置.                                   *           =0 - string中没有child.                                   *----------------------------------------------------------------------------*/str_test(char *string,char *child){	int cunt,len,zs;	len=strlen(child);	zs=strlen(string)/len;	for(cunt=0;cunt<zs;cunt++)	{		if(memcmp(child,string+cunt*len,len)==0)			return(cunt+1);	}	return(0);}/*----------------------------------------------------------------------------* * FUNCTION: 测试字串是否为数字字串. * Argument: *           char *string - 字符串. * Return  :  *           TRUE - 是数字字串.                                   *           FALSE - 不是数字字串.                                   *----------------------------------------------------------------------------*/numstr_test(char *string){	char c;	int cunt;	for(cunt=0;c=*(string+cunt);cunt++)	{		if(!isdigit(c))			return(FALSE);	}	return(TRUE);}/*----------------------------------------------------------------------------* * FUNCTION: 截取某子串转成整数值. * Argument: *           char *string - 字符串. *           int start - 开始位置. *           int width - 宽度. * Return  :  *           int - 整数值.                                   *----------------------------------------------------------------------------*/subnum(char *string,int start,int width){	char num_buf[6];	if(width>5) return(0);	memcpy(num_buf,string+start,width);	*(num_buf+width)='\0';	return(atoi(num_buf));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -