我是靠谱客的博主 聪明铃铛,最近开发中收集的这篇文章主要介绍C语言画菜单函数(只为方便手机端学习用户),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

主要针对手机端初学者用户,重复画菜单不方便调节字符空格不方便居中显示等问题。
函数自动画菜单,边框字符自定义,宽高自定义,要显示的菜单写成数组,调用函数即可。
注意:输出字体默认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语言画菜单函数(只为方便手机端学习用户)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部