炸蝦碎碎念。

[Notes, GNU/Linux, Open Source, Ruby on Rails, Computer Science, Archlinux]

Carriage Return (\r)

介紹Carriage Return

因為在Github Explore上發現這個小Project,progressbar,就研究了一下。好奇這種progress bar是怎麼做到一直更新同一行的。在code裡發現他用的是printf("test string\r"),那個\r就是Carriage return,會把游標移到那行的最左邊,就可以更新最後一行啦。這好像是古代打字機上面會有的按鍵喔~~ EDIT: 被同學吐槽為什麼現在才知道這種東西,真是學藝不精。

Demo Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <unistd.h>

void hey(int count)
{
    printf("hey");
    for (int i = 0; i < count; i++) {
        putchar('y');
    }
    putchar('\r');
    fflush(stdout);
    sleep(1);
}
int main(void)
{
    for (int i = 0; i < 10; i++) {
        hey(i);
    }
    putchar('\n');
    return 0;
}

Comments