更详细的讲解和代码调试演示过程,请参看视频

如何进入google,算法面试技能全面提升指南

上节,我们实现了控制台命令mem, 它能显示当前可用内存,本节我们实现另一常用命令叫cls, 该命令的作用是把控制台所以字符全部清空,例如假设当前控制台显示的信息如下:

此时,我们在控制台中输入命令”cls”, 运行后控制台上所有信息将会被清除:

在实现该命令前,我们先实现一个辅助函数,当前,我们判断控制台上输入的字符是否是一个合法命令,使用的是逐个字符匹配,例如判断是否输入了命令, “mem”, 我们原来的做法是:

if (cmdline[0] == 'm' && cmdline[1] == 'e' && cmdline[2] == 'm'

&& cmdline[3] == 0)

这种做法很不灵活,如果命令字符串含有多个字母,那么怎个if语句就得写得很长,这样的代码是很难维护的,所以,我们要实现一个函数strcmp, 它比较两个

字符串内容是否一样,一样的话返回1,不一样返回0,代码如下:

int strcmp(char *src, char *dest) {

if (src == 0 || dest == 0) {

return 0;

}

int i = 0;

while (src[i] != 0 && dest[i] != 0) {

if (src[i] != dest[i]) {

return 0;

}

i++;

}

if (src[i] == 0 && dest[i] != 0) {

return 0;

}

if (src[i] != 0 && dest[i] != 0) {

return 0;

}

return 1;

}

有了比较函数后,以后我们用来判断输入字符串是否是合法命令就方便多了。接下来我们要实现cls 命令,该命令的实现很简单,只要把控制台显示区域的所有像素点全部设置成黑色就可以了,代码如下:

void console_task(struct SHEET *sheet, int memtotal) {

struct TIMER *timer;

struct TASK *task = task_now();

int i, fifobuf[128], cursor_x = 16, cursor_c = COL8_000000;

int cursor_y = 28;

char  cmdline[30];

int x = 0, y = 0;

for(...) {

....

else if (i == KEY_RETURN) {

set_cursor(shtctl, sheet, cursor_x, cursor_y, COL8_000000);

cmdline[cursor_x / 8 - 2] = 0;

cursor_y = cons_newline(cursor_y, sheet);

if (strcmp(cmdline, "mem") == 1) {

char *s = intToHexStr(memtotal / (1024));

showString(shtctl,sheet,16,cursor_y,COL8_FFFFFF, "free ");

showString(shtctl,sheet,52,cursor_y, COL8_FFFFFF, s);

showString(shtctl, sheet, 126, cursor_y, COL8_FFFFFF, " KB");

cursor_y = cons_newline(cursor_y, sheet);

} else if (strcmp(cmdline, "cls") == 1) {

for (y = 28; y < 28 + 128; y++)

for (x = 8; x < 8 + 240; x++) {

sheet->buf[x + y * sheet->bxsize] = COL8_000000;

}

sheet_refresh(shtctl, sheet, 8, 28, 8+240, 28+128);

cursor_y = 28;

showString(shtctl, sheet, 8, 28, COL8_FFFFFF, ">");

}

cursor_x = 16;

}

....

}

}

当控制台收到回车键按钮消息后,检测一下输入字符串是否是”cls”, 如果是的话,它变量控制台显示区域的每个像素,把像素颜色全部设置成黑色,同时把光标闪烁的位置设置为第一行,这样整个窗口清除的效果就产生了。

更详细的代码讲解和调试演示,请参看视频。

更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号:

java执行cls命令_java开发系统内核:cls 屏幕清空命令的实现相关推荐

  1. java 执行cmd 堵塞_java中调用cmd命令被阻塞无法返回和继续执行

    在项目中用到了数据库的备份和恢复功能,就通过java的Runtime.getRuntime().exec()来调用cmd或者linux命令来导出和导入.sql文件.但是在执行恢复时,程序一直被阻塞,没 ...

  2. java调用多条cmd命令_Java中调用多条cmd命令

    使用Java执行cmd代码很简单: try{ Runtime.getRuntime().exec("cd /d E:"); }catch (Exception e) { e.pri ...

  3. java技术学习内容_Java开发主要都学些什么内容?

    展开全部 Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲,你可以看下. 第一阶段:JavaSE ...

  4. linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]

    Shell脚本相关命令 介绍 一句话说明shell脚本是个啥 shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能 类似windows下的批处理文件 一般以sh为文件后缀 语法 程序结 ...

  5. c java 系统开发_java开发系统内核:使用C语言开发系统应用程序

    更详细的讲解和代码调试演示过程,请参看视频 用java开发C语言编译器 如果你对机器学习感兴趣,请参看一下链接: 机器学习:神经网络导论 我们的操作系统通过增添内核接口导出机制后,已经可以作为平台,运 ...

  6. java可以转linux么_Java开发必会的Linux命令(转)

    本文并不会对所有命令进行详细讲解,只给出常见用法和解释.具体用法可以使用--help查看帮助或者直接通过google搜索学习. 1.查找文件 find / -name filename.txt 根据名 ...

  7. java redis 面试题_Java开发人员怎么面试 常见Redis面试题有哪些

    Java开发人员怎么面试?常见Redis面试题有哪些?Redis是目前各大企业都在使用的人们技术,也是企业选拔人才时考核的一个难题.有很多同学只是简单了解Redis的应用,但对于为什么要用Redis以 ...

  8. java spring配置文件路径_java - 在spring b中从命令行设置活动配置文件和配置位置...

    java - 在spring b中从命令行设置活动配置文件和配置位置 我有一个春季启动应用程序. 我的应用程序中有三个配置文件 - > 开发,分期和生产. 所以我有3个文件 应用developm ...

  9. java如何调用linux命令_java程序中如何调用linux命令

    java程序中如何调用linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服 ...

  10. java全局变量怎么定义_Java开发知识点:如何理解Java函数式编程?

    Java是一种计算机编程语言,可用于编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是IT开发行业中最受欢迎的编程语言之一.想要学好Java必须要一步一个脚印打好基础.积攒实战经验 ...

最新文章

  1. 【必须收藏】那些酷炫的深度学习网络图怎么画出来的?
  2. Object与RTTI
  3. C++中public,protected,private派生类继承问题和访问权限问题
  4. 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句
  5. VC++中使用内存映射文件处理大文件
  6. Java 多态,接口
  7. CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石头剪刀布(按秩合并并查集)
  8. 编程语言-初学者常见的几个问题
  9. Python高性能计算库—Numba
  10. 开启本地git权限_git的使用,有这篇文章就够了
  11. epoll文件服务器,使用epoll模型的服务器
  12. 2019 deecamp B题不完全的记录
  13. 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
  14. coreldraw2021永久序列号和激活注册教程
  15. Java:ActionListener接口
  16. SAP HANA SQL系列四:数字函数
  17. [机器学习] --- 红楼梦后四十回到底是谁写的?机器学习分析法
  18. 「镁客·请讲」火柴全景VR徐晨翔:正值VR本命年,我们该做一些不一样的事情...
  19. MapReduce统计部门员工组别,并排序
  20. Idea解决项目起不来的三个方法

热门文章

  1. 笔记本计算机怎么进入安全模式启动,笔记本电脑如何进入安全模式
  2. 《谁动了我的奶酪》感悟
  3. 【转载】用Pwnage + Redsnow 制作完美越狱固件
  4. java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
  5. 美和易思——互联网技术学院返校周测题
  6. python练习-跳跃游戏
  7. 你认为996是一种荣耀吗?
  8. 安装CAD2006出现html,win7系统安装cad2006出现已终止CAD2006-Simplifieng安装的解决方法...
  9. AutoCAD 2006/2007等在高版本系统上无法安装
  10. RingBuffer