我是靠谱客的博主 糟糕皮带,最近开发中收集的这篇文章主要介绍C语言快速生成简洁优雅的黑窗口菜单-二重指针、指针数组、字符串、字符的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
在C的编程过程中,是不是都这样写的呢?
在这里插入图片描述
上面的黑窗口菜单硬输出,在调节间距的时候,真的有点心累,费了好大功夫才完成,且做完之后没有私毫成就感。不过也还行,看得过去,不算垃圾,是垃圾Plus!!!
我想随心所欲地把玩这些东西!或宽或窄,或高或低。
这样!在这里插入图片描述
还有这样!
在这里插入图片描述
于是我就开始思考了一番,得到以下代码。

#include<stdio.h>
#include<string.h>
#define SPAN 30;	    //水平跨度
#define VerticalGap 1  //行间距,取值最好为1或2,也可以更大
void menu(char** menu,int length);//二重指针和指针数组的应用
void duplicate(int size,char token);//给定整型值size和符号token,输出size个token,结尾不换行
void main()
{
     char* menu1[] = {
            "1.reinitialize list", "2.present list",
	 "3.append element","4.delete element", 
	"5.modify element","6.insert element",
	"7.clear list","8.exit", "9.clear screen"};
     char* menu2[]={"Devices",
	"1.Printers&Scanners","2.Mouse",
	"3.Touchpad","4.Typing","5.USB"};//指针数组

	menu(menu1,sizeof(menu1)/sizeof(char*));
	menu(menu2,sizeof(menu2)/sizeof(char*));
}

void menu(char** origin,int length) {
    int span=SPAN;
    int gapLength;
    duplicate(span,'*');
    printf("n");
    for (int i = 0; i < length; ++i) {
        duplicate(1,'*');
        gapLength=span-2-(strlen(*(origin+i)));
        duplicate(gapLength/2,' ');
        printf("%s",origin[i]);
//下面有个不完美的地方,但我们得允许不完美,
//接受不完美,始终走在追求完美的路上!
        if(gapLength%2==0)
        {
            duplicate(gapLength/2,' ');
        }else
        {
            duplicate(gapLength/2+1,' ');
        }
        duplicate(1,'*');
        duplicate(VerticalGap,'n');
    }
    duplicate(span,'*');
    printf("n");
}
void duplicate(int size,char token)
{
    for (int i = 0; i <size ; ++i) {
        printf("%c",token);
    }
}

最后

以上就是糟糕皮带为你收集整理的C语言快速生成简洁优雅的黑窗口菜单-二重指针、指针数组、字符串、字符的使用的全部内容,希望文章能够帮你解决C语言快速生成简洁优雅的黑窗口菜单-二重指针、指针数组、字符串、字符的使用所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部