PDA

View Full Version : آیا می‌خواهید یک نویسه را در ترمینال از راست به چپ چاپ کنید؟ ( در لینوکس و احتمالاً در مک )



علی بهمنی جلالی
سه شنبه 11 آبان 1395, 18:39 عصر
سلام
با مقداری تحقیق و مخلوط کردن کد، توانستم یک کد بنویسیم که علامت مساوی را از سمت راست به چپ در ترمینال ( چه در gnome terminal و چه در tty1 ) چاپ می‌کند. به عکس زیر دقت کنید:

143276

این هم کد: ( این برنامه را می‌توانید در کامپایلر سی‌پلاس‌پلاس، مانند g++ کامپایل کنید. )


#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sys/ioctl.h>


int main()
{
system("clear");

struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);


int wRow = w.ws_row;
int wColumns = w.ws_col;


for ( int j = 1; j <= wRow; ++j )
{
for ( int i = wColumns; i > 0; --i )
{
std::cout << "\033[" << j << ";" << i << "H";
std::cout << "=";
std::cout << "\033[" << j << ";" << i - 1 << "H";
std::cout << std::flush;
usleep( 50000 );
}
}

std::cout << std::endl;
}


منابع:
۱- http://stackoverflow.com/questions/1022957/getting-terminal-width-in-c/1022961#1022961
۲- https://en.wikipedia.org/wiki/ANSI_escape_code
۳- http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/c327.html