【Linux环境编程入门】五、控制终端/屏幕的操作

本系列文章系本人原创,欢迎转载,转载请注明出处

注:这篇文章所建立的所有文件(源文件,库文件,可执行文件等)均可在这里下载。下载的是chapter5.tar.gz文件,可以在Linux系统终端中用如下命令解压到当前目录:

tar zxvf chapter5.tar.gz

在Linux系统下,你可能会与终端(命令行)有很多的交互,因此,编写能够控制终端的程序也是值的探讨的。现在我们就来讲解一下Linux下控制终端的函数库curses。

一、用curses函数库在终端打印 “Hello World!”

用Hello World来作为一个语言的学习过程中的第一个程序几乎已成为一种惯例。同样的,我们用curses函数库做的第一件事,也是打印Hello World。

在此之前,因为我们操作的是终端(屏幕),所以我们先来简单的介绍下字符是如何显示在屏幕上的。

首先,curses函数库有两个数据结构来对应终端屏幕:stdscr和curscr。stdscr是curses的默认输出屏幕,curscr对应的是当前屏幕,在程序调用refresh函数之前,输出到stdscr上的内容是不会显示出来的。而refresh函数的功能就是比较stdscr和curscr的不同,然后根据结果来刷新屏幕。
既然是要将内容输出到屏幕上,那么我们就要知道内容输出到屏幕上的什么位置。在curses函数库中,用形如(行,列)的方式来表示屏幕上的位置,如 (5,2)就表示第五行第二列。坐标原点 (0,0)在终端屏幕的左上角。
好了,接下来我们就开始第一个用curses函数库在屏幕上输出的例子吧,源码如下:

#include <curses.h>

int main()
{
    //在进行屏幕的操作前需要先初始化
    initscr();
    //移到第二行,第五列
    move(2, 5);
    //在当前位置输出字符串
    printw("%s","Hello World!");
    //refresh的作用我们在上面讲过
    refresh();
    //停顿3秒
    sleep(3);
    //我们的屏幕操作结束了
    endwin();
    return 0;
}

回到终端,编译源码。由于curses函数库不是C语言标准库,在编译的时候需要指定库文件:

gcc helloWorld.c -lcurses

编译无误后,执行文件,效果如图,会在指定的位置输出 “Hello World!”,停顿3秒,然后程序退出。
这里写图片描述

二、一些关于终端屏幕的基本操作

光标的移动

这个比较简单,我们呢在上面的 “Hello World”的例子里已经见到过:

#include <curses.h>
int move(int row, int column);

执行该函数,将光标移动到到指定的(行,列)。这里再介绍两个值LINES和COLS,它们分别对应row和column能指定的最大值。

键盘相关的操作

1) 控制模式

#include <curses.h>

//开启回显
int echo(void);
//关闭回显
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值