11.06.2018

printf在同一行....

這只是一個小筆記,並沒有太大的用意。當我們在Linux下用TFTP或是FTP這一些套件時,在上下傳檔案,我們會看到軟體在執行時,會在同一行一直跑目前的進度傳送了多少Bytes;我心裡就在想這是怎麼做的?趕緊Google一下,把結果給記下來。觀念很簡單,要善用跳脫字元'\r' (Carriage Return,回車),讓該行的游標回到行首重新輸出就行了。然後再搭配usleep()函式,每一次的輸出要停多少毫秒。範例如下:
#include <stdio.h>
#include <unistd.h>

int main(void)
{
  int i = 0;

  for (i = 0; i < 3145728; i++) {
    printf("\rReceived %d bytes .... ", i);
    fflush(stdout);
    usleep(10000);
  }
  printf("\n");

  return 0;
}

沒有留言:

張貼留言