علی بهمنی جلالی
سه شنبه 11 آبان 1395, 19: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
با مقداری تحقیق و مخلوط کردن کد، توانستم یک کد بنویسیم که علامت مساوی را از سمت راست به چپ در ترمینال ( چه در 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