日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一 什么是ANSI控制碼(ANSI escape sequences)

維基百科給出的解釋如下:

ANSI escape sequences are a standard for in-band signaling to control cursor location, color, font styling, and other options on video text terminals and terminal emulators. Certain sequences of bytes, most starting with an ASCII escape character and a bracket character, are embedded into text. The terminal interprets these sequences as commands, rather than text to display verbatim.

標(biāo)準(zhǔn)控制碼是一個(gè)標(biāo)準(zhǔn)用于規(guī)范控制視頻文本終端和模擬終端上的光標(biāo)位置,顏色,字體樣式和其他選項(xiàng)的帶內(nèi)信號(hào)(筆者注:用于規(guī)范帶內(nèi)信號(hào))。這些特定的序列,大都以一個(gè)ASCII的 'escape' 字符和一個(gè) '[' 字符開頭,并被嵌入到文本中,終端將這些特定的序列解釋成命令,而不是顯示在屏幕上的文本。

二 CSI (Control Sequence Introducer) sequences

ANSI標(biāo)準(zhǔn)規(guī)定 'esc' 字符后面所跟的第一個(gè)字符用于標(biāo)識(shí)序列的類型,同時(shí)又根據(jù)第一個(gè)字符的大小將Escape序列分為四個(gè)大類:

  • nF Escape Sequence (0x20~0x2F),
  • Fp Escape Sequence (0x30~0x3F),例如:esc [
  • Fe Escape Sequence (0x40~0x5F),例如:esc 7
  • Fs Escape Sequence (0x60~0x7E),例如:esc c

為了不偏離本文的中心,我們這里只關(guān)注當(dāng) 'esc' 后面接 '[' 的情況,當(dāng) 'esc'后面接 '[' 時(shí)我們稱之為CSI序列。下面給出幾個(gè)常用的CSI序列語法(格式中CSI指代esc [)。

格式

說明

CSI n A

光標(biāo)上移n行

CSI n B

光標(biāo)下移n行

CSI n C

光標(biāo)往前移動(dòng)n字符

CSI n D

光標(biāo)往后移動(dòng)n字符

CSI n J

清屏

CSI n K

清行(n取0時(shí),清空光標(biāo)到行尾的所有字符;當(dāng)n取1時(shí),清空光標(biāo)到行尾的所有字符;當(dāng)n取2時(shí),清空整行的字符,光標(biāo)位置不變。)

CSI ? 25 h

顯示光標(biāo)

CSI ? 25 I

隱藏光標(biāo)

 

三 簡(jiǎn)單案例

案例:實(shí)現(xiàn)進(jìn)度條效果,每秒增長(zhǎng)10%

#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define BAR_SIZE 10

void progressbar(int sec)
{

    char bar[BAR_SIZE+1] = {0}; /* '\0' */

    for(int j = 1; j <= BAR_SIZE; j++) {
        memset(bar, ' ', BAR_SIZE);
        memset(bar, '>', j);
        printf("[%s]%3d%%", bar, j*10);
        fflush(stdout);
        sleep(sec);
      	/* 33[1K代表清行,33[16D代表光標(biāo)左移16字符。 */
        printf("\033[1K\033[16D"); ///< 光標(biāo)回到行首
    }
}

int main(void)
{
    progressbar(1);
}
C語言如何在終端實(shí)現(xiàn)進(jìn)度條效果?

實(shí)現(xiàn)效果

 

參考文獻(xiàn)

[1] ANSI escape code (http://en.volupedia.org/wiki/ANSI_escape_code)

分享到:
標(biāo)簽:語言
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定