概述
主要针对手机端初学者用户,重复画菜单不方便调节字符空格不方便居中显示等问题。
函数自动画菜单,边框字符自定义,宽高自定义,要显示的菜单写成数组,调用函数即可。
注意:输出字体默认16磅大小,其它大小可能有偏差。
完整代码如下,仅供参考!
#include <stdio.h>
#include<string.h>
#include<wchar.h>
#include<locale.h>
int drawrect(unsigned int w,unsigned int h,char symbol ,char **menu);
int get_chsQty_ascQty(const char *strsrc,unsigned int *chs_n ,unsigned int *asc_n);
int main(int argc, char** argv)
{
//首先设置要显示的菜单项数组,要几项自己且定,注意末尾项设置为"空"
char *menu[]={
"1->显示看看主菜单","2->五好打开某功能","3->显示某么好信息","4->哈嘎嘎哈哈哈喔","0->退出哟哟程序了","空"}
;
//只需要调用一个函数即可自动建立菜单了
//第一个参数边框宽(字节),第二个参数边框高(字节)
//第三个参数是画边框所用的字符
//注意控制台字体大小是16磅,其它大小显示可能会有差距
drawrect(52,15,'#',menu);
return 0;
}
//求出字符串中ascii字符个数以及中文字符个数
int get_chsQty_ascQty(const char *strsrc,unsigned int *chs_n ,unsigned int *asc_n)
{
//设置字符集环境为中文。
setlocale(LC_ALL, "zh_CN.UTF-8");
//setlocale(LC_ALL, "chs");
//原字串长度
unsigned int slen=strlen(strsrc);
if(slen>2048)return -1;
wchar_t wstr[512]={
0}
;
mbstowcs(wstr,strsrc,slen);
unsigned int wcs_n=wcslen(wstr);
//初始化半角字符个数为0
*asc_n=0;
*chs_n=0;
//初始化全角字符个数为0
for(int i=0;i<wcs_n;i++)
{
if((unsigned int)(wstr[i])>255)
{
++(*chs_n);
}
else
{
++(*asc_n);
}
}
return 0;
}
//手机默认长度42字节,高度15比较合适
//画边框单位符号只支持英文字母以及半角标点符号
int drawrect(unsigned int w,unsigned int h,char symbol,char **menu)
{
int chs_n=0;
//全角字符个数
int asc_n=0;
//半角字符个数
int menulen;
//菜单显示长度
int menuwid;
//菜单字串缩进宽度
int menulen1;
printf("n");
for(int i=0;i<w;i++)
{
printf("%c",symbol);
}
printf("n");
int j=0;
for(int i=0;i<h;i++)
{
if(strcmp(menu[j],"空")!=0)
{
printf("%c",symbol);
get_chsQty_ascQty(menu[j],&chs_n ,&asc_n);
//显示出来看到的并非就是真实的。
menulen=chs_n*3+asc_n;
//参与计算项
menulen1=chs_n*2+asc_n;
menuwid=(w-menulen1)%2==0 ? menulen+(w-menulen1)/2-1 : menulen+(w-menulen1)/2 ;
printf("%*s", menuwid,*(menu+j++));
printf("%*cn",(w-menulen1)/2,symbol);
}
}
for(int i=0;i<w;i++)
{
printf("%c",symbol);
}
return 0;
}
最后
以上就是聪明铃铛为你收集整理的C语言画菜单函数(只为方便手机端学习用户)的全部内容,希望文章能够帮你解决C语言画菜单函数(只为方便手机端学习用户)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复