اگر نیاز به برنامه نویسی اپلیکیشن موبایل از نوع اندروید یا iOS دارید.. اگر نیاز به هر نوع وبسایت یا وب اپلیکیشنی دارید.. اگر قصد آنلاین کردن کسب و کارتون رو دارید با من تماس بگیرید 09128182951
برنامه نویسی C در لینوکس
برای انجام بخشی از یک پروژه نیاز بود تا از زبان سی استفاده کنم. برای مرور این زبان به کتاب جعفر نژاد قمی که از دوران دانشگاه (سال ۱۳۸۷) برام به یادگار مونده بود رجوع کردم. اون زمان از ویندوز و کامپایلر turbo-C استفاده میکردم. این کامپایلر از هدر <conio.h> پشتیبانی میکرد. اما در کامپایلر GCC این کتابخانه در دسترس نیست. در نتیجه ما در لینوکس به توابعی مانند gotoxy , clrscr و getche و getch دسترسی نداریم. خب من میخوام در این نوشته نحوه تعریف این توابع رو به شما آموزش بدم.
تابع gotoxy برای GCC Linux
گاهی ممکنه نیاز باشه در صفحه ی خروجی مکان نما رو به نقطه ی خاصی انتقال بدیم. برای این منظور از تابع gotoxy استفاده میشه. الگوی این تابع در فایل conio.h وجود داره که همونطور که گفته شد در لینوکس پشتیبانی نمیشه. خب پس ما میتونیم این تابع رو خودمون تعریف کنیم. برای تعریف این تابع به شرح زیر عمل کنید:
//gotoxy() function definition
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
خب یه مثالش این میتونه باشه:
#include<stdio.h>
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
int main ()
{
int x=10, y=20;
gotoxy(x,y);
printf("my email is: sh4rifi@gmail.com!");
return 0;
}
خروجی:
تابع clrscr برای GCC Linux
برای پاک کردن اسکرین ما میتونیم از دستورات ترمینال لینوکس استفاده کنیم:
#include<stdio.h>
//clrscr() function definition
void clrscr(void)
{
system("clear");
}
int main ()
{
clrscr(); //clear output screen
printf("Hello. I am sh4rifi!!!"); //print message
return 0;
}
خروجی:
تابع getch و getche برای GCC Linux
تابع getch عمل خواندن اطلاعات رو بدون اکو انجام میده. یعنی توی اسکرین نمایشش نمیده. تابع getche هم کار تابع getch رو همراه با اکو انجام میده. یعنی کاراکتر وارد شده رو در اسکرین چاپ میکنه.
به مثال زیر توجه کنید:
#include <termios.h>
#include <stdio.h>
static struct termios old, new;
/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
tcgetattr(0, &old); //grab old terminal i/o settings
new = old; //make new settings same as old settings
new.c_lflag &= ~ICANON; //disable buffered i/o
new.c_lflag &= echo ? ECHO : ~ECHO; //set echo mode
tcsetattr(0, TCSANOW, &new); //apply terminal io settings
}
/* Restore old terminal i/o settings */
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}
/* Read 1 character - echo defines echo mode */
char getch_(int echo)
{
char ch;
initTermios(echo);
ch = getchar();
resetTermios();
return ch;
}
/*
Read 1 character without echo
getch() function definition.
*/
char getch(void)
{
return getch_(0);
}
/*
Read 1 character with echo
getche() function definition.
*/
char getche(void)
{
return getch_(1);
}
int main(void) {
char c;
printf("(getche example) Please enter a character: ");
c = getche();
printf("\nYou entered: %c\n", c);
printf("(getch example) Please enter a character: ");
c = getch();
printf("\nYou entered: %c\n", c);
return 0;
}
خروجی:
مطلبی دیگر از این انتشارات
جف بزوس ثروتمند ترین فرد جهان
مطلبی دیگر از این انتشارات
آموزش رایگان یا پولی؟
مطلبی دیگر از این انتشارات
آموزش جامع و رایگان سی شارپ