概述
在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语言快速生成简洁优雅的黑窗口菜单-二重指针、指针数组、字符串、字符的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复