哈喽大家好,在C语言程序设计中,界面美观是评分标准之一。
下面向大家介绍几个有助于界面美观的小技巧
光标移动函数
无需考虑太多,哥给你封装了个函数,直接用。
调用传值函数: goto_xy(2,3);
即可实现在控制台界面将光标移动至第二行,第三列。
记得引用头文件 #include<Windows.h> 以及 #include<stdio.h>
attention : 以左上角为坐标原点,从 0 开始,向下为向右为正方向。
代码如下:
void goto_xy(short x, short y)//定位光标位置到指定坐标
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x,y };
SetConsoleCursorPosition(hOut, pos);
}
实现输入密码变成 * ,并且可以退格
初步想法是,创建一个字符数组。每当读入一个字符,就 printf("*");
并且同时识别出 Backspace 和 Enter 键,通过刚才介绍的光标移动函数
即可实现退格和结束输入。
下面是代码:
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
void goto_xy(short x, short y)//定位光标位置到指定坐标
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x,y };
SetConsoleCursorPosition(hOut, pos);
}
int main()
{
printf("_______________________");
goto_xy(0,0);
char initial_input[40] = "0";
int i = 0;
char ch;
while (1)
{
ch = getch();
if (ch == '\r')
break;
if (ch == '\b')
{
if (i > 0)
{
i--;
initial_input[i] = '\0';
goto_xy(i,0);
printf("_");
goto_xy(i,0);
continue;
}
continue;
}
else
{
initial_input[i] = ch;
i++;
printf("*");
}
}
return 0;
}
将上述代码光标跳转函数的参数进行调整(可以使用变量进行传值),
便可以很好地移植到你的程序设计中。
获取输入密码属性
刚刚以字符形式输入密码,可通过以下方式简单获知输入数字的合法性,长度和数值。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
int initial_input_length = 0;
initial_input_length = strlen(initial_input); //输入数字的长度
for (int i = 0; i < initial_input_length; i++)
{
if (!isdigit(initial_input[i]))
{
break; //检测每个输入是否都为数字
}
}
int count = 0;
for(int i = 0;i < initial_input_length;i++)
{
count += (initial_input[i] - 48) * pow(10,initial_input_length - 1 - i);
}
printf("%d",count); //输入数字的数值
上面的代码使用了 isdigit() 函数,该函数包含于 include<stype.h> 头文件中,可以便利地检测字符属性。
该头文件中还包含有很多其他便于检测字符属性的函数,
[进入这个网页,了解更多 ctyep.h ](https://blog.csdn.net/m0_61030119/article/details/121674665)
清屏、睡眠函数
在程序设计中,常常从一个页面进入下一个页面。如果一直 print 页面信息,效果相当不美观。
这时可以使用法宝:清屏函数。
#include<stdio.h>
#include<Windows.h>
int main()
{
printf("123");
system("cls");
return 0;
}
清屏函数包含于头文件 #include<Windows.h> 中,同样包含于这个头文件中的另一个很好用的函数是睡眠函数。
#include<stdio.h>
#include<Windows.h>
int main()
{
printf("123");
Sleep(2000);
system("cls");
return 0;
}
睡眠函数 Sleep() 使得程序执行到这段代码的时候稍作休息。
括号内的数字表示毫秒,所以 Sleep(2000) 即代表程序暂停两秒钟。
改变字体颜色和字体背景色
黑白框框看腻了吗?改变控制台字体颜色,来点儿新鲜的吧。在笔者上一篇 SCDN 中详细介绍了三种改变控制台字体颜色和背景色的方法。戳我查看详情
好啦,今天的介绍就到这里,希望上述内容可以帮到你