一起talk C栗子吧(第一百七十五回:C语言实例--获取当前终端的行数和列数)
来源:互联网 发布:数据分析需要的技能 编辑:程序博客网 时间:2024/06/05 00:31
各位看官们,大家好,上一回中咱们说的是关闭终端中缓冲功能的例子,这一回咱们说的例子是:获取当前终端的行数和列数 。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前面章回中介绍了termios相关的信息,以及termios提供的编程接口,通过这些接口可以操作终端,今天我们再介绍一些操作终端的编程接口,通过这些接口可以获取当前终端的行数和列数,这便是我们今天的主题。
int setupterm(char *term, int fd, int *errret);
- 该函数用来修改当前终端的类型
- 该函数的第一个参数是char*类型的指针,函数使用它指向的值来修改终端类型;
- 该函数的第二个参数是文件描述符,通过它可以修改终端类型;
- 该函数的第三个参数是一个指针,用来保存函数运行的结果;
- 该函数运行成功时返回1,失败时返回-1或者0.其中-1表示没有终端信息,0表示有终端信息,但是没有匹配的终端;
通常情况下,第一个参数使用空指针,这样就表示获取当前终端的类型;第三个参数也经常使用空指针,这样只需要查看函数的返回值就可以。
int tigetnum(char * capname);
- 该函数用来获取终端中与数值相关的值;
- 该函数的参数表示与终端中某个数值对应的名字;
- 该函数运行成功时返回终端中的与参数对应的数值,否则返回-2;
关于该函数的参数,我们可以使用终端中与行数和列数相对的名字:lines和cols。这样就可以获取到当前终端的行数和列数。我这么一说,看官们是不是想马上动手实现一下?接下来让我们一起动手吧!
res = setupterm(NULL,fileno(stdout),NULL); row_count = tigetnum("lines"); col_count = tigetnum("cols"); printf("Terminal row:%d \n",row_count); printf("Terminal colum:%d \n",col_count);
我们在代码中首先获取了当前终端中的类型,然后继续获取当前终端的行数和列数,这样便实现的我们的目标。
看官们,以上是核心代码,完整的代码放到了我的资源中,大家可以点击这里下载使用。
下面是程序的运行结果,请大家参考:
Terminal row:56 Terminal colum:113
该结果显示的是我正在使用的终端行数和列数,大家运行时可能会有不同的结果,这个是正确的,因为不同的终端拥有不同的行数和列数。正所谓世界上没有两片相同的叶子,世界上也没有两个相同的终端,哈哈。此外,在编译时需要手动链接ncurses库,因为这些接口使用了该库中的内容,具体的命令如下:
gcc GetLineCol1.c -o end -lncurses
各位看官,关于获取当前终端行数和列数的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
0 0
- 一起talk C栗子吧(第一百七十五回:C语言实例--获取当前终端的行数和列数)
- 一起talk C栗子吧(第一百五十五回:C语言实例--获取socket通信地址)
- 一起talk C栗子吧(第一百七十回:C语言实例--关闭终端中的回显功能一)
- 一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)
- 一起talk C栗子吧(第一百七十一回:C语言实例--关闭终端中的回显功能二)
- 一起talk C栗子吧(第一百七十二回:C语言实例--关闭终端中的回显功能三)
- 一起talk C栗子吧(第一百七十三回:C语言实例--关闭终端中的缓冲功能一)
- 一起talk C栗子吧(第一百七十四回:C语言实例--关闭终端中的缓冲功能二)
- 一起talk C栗子吧(第一百三十七回:C语言实例--查看环境变量)
- 一起talk C栗子吧(第一百四十五回:C语言实例--socket概述)
- 一起talk C栗子吧(第一百四十六回:C语言实例--socket属性)
- 一起talk C栗子吧(第一百六十四回:C语言实例--const关键字)
- 一起talk C栗子吧(第一百六十六回:C语言实例--大小写字符转换)
- 一起talk C栗子吧(第一百九十回:C语言实例--文件定位三 )
- 一起talk C栗子吧(第一百七十八回:C语言实例--字符和字符串输出函数一)
- 一起talk C栗子吧(第一百七十九回:C语言实例--字符和字符串输出函数二)
- 一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)
- 一起talk C栗子吧(第一百三十四回:C语言实例--创建线程时的内存细节)
- 【MyBatis框架】mapper配置文件-关于动态sql
- 卷积神经网络
- UVA-123
- BZOJ 1093: [ZJOI2007]最大半连通子图
- 2014.7.27 ~ 2016.7.10 回顾
- 一起talk C栗子吧(第一百七十五回:C语言实例--获取当前终端的行数和列数)
- 欢迎使用CSDN-markdown编辑器
- HDU-2026 首字母变大写
- 叶酸片
- 蛇形填数
- csdn待改进点之32------>是谁去掉/删除了我博客的一条正常评论?
- CSP考试 2015年03月第4题 网络延时 C语言实现
- 仿QQ阅读UI布局的搭建之感想
- ArrayAdapter学习