کتابخانه Stdlib.h یکی دیگر از کتابخانه های استاندارد زبان C و ++C است. این کتابخانه چندین ماکرو و توابع مختلف را برای انجام کاربردهای عمومی تعریف می کند. از جمله کاربر های این کتابخانه میتوان به مدیریت حافظه پویا ، تولید اعداد تصادفی ، ارتباط با محیط ، حساب های عدد صحیح ، جستجو ، مرتب سازی و تبدیل و … اشاره نمود. در این آموزش، همانند سلسله آموزش های تحلیل کتابخانه، به تشریح و تحلیل توابع کتابخانه Stdlib.h می پردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نکات فنی کتابخانه Stdlib.h
این کتابخانه محدود به سخت افزار خاصی نیست و در اکثر پروژه هایی که به زبان C و ++C نوشته میشوند، کاربرد بسیاری دارد. این کتابخانه نیاز به نصب ندارد و تقریبا در همه کامپایلر هایی که بر پایه زبان های C و ++C هستند نصب میشود. برای استفاده از این کتابخانه ها در کامپایلر و یا IDE هایی مثل KEIL ،CodeVison ،Arduino IDE و … بایستی فایل هدر مربوط به کتابخانه را به برنامه خود اضافه کنید. با نوشتن دستور زیر در ابتدای برنامه این کتابخانه به کد شما اضافه می شود.
#include<stdlib.h>
توابع کلیدی کتابخانه Stdlib.h
در این بخش توابع مهم و کلیدی کتابخانه را مورد بررسی قرار میدهیم. این کتابخانه دارای توابع مختلفی است که هر یک از این توابع عملیات خاصی را انجام می دهند. در ادامه با کاربرد هر یک از این توابع آشنا میشویم.
-
int abs(int x)
تابع abs مقدار مطلق عدد صحیح را تعیین می کند. این تابع بین کتابخانه های Stdlib.h و Math.h مشترک است.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_abs (void) { int x; int y; x = -42; y = abs (x); printf ("ABS(%d) = %d\n", x, y); }
خروجی کد بالا به صورت زیر است.
ABS(-42) = 42
-
double atof(const char *str)
تابع atof رشته را به مقدار نقطه شناور تبدیل می کند. رشته ورودی باید دنباله ای از کاراکترها باشد که می تواند به عنوان یک عدد نقطه شناور تفسیر شود. این تابع پردازش کاراکترها را در اولین رشته ای که نمی تواند به عنوان بخشی از عدد تشخیص دهد، متوقف می کند.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_atof (void) { float f; char s [] = "1.23"; f = atof (s); printf ("ATOF(%s) = %f\n", s, f); }
خروجی کد بالا به صورت زیر است.
ATOF(1.23) = 1.230000
- int atoi(const char *str)
تابع atoi رشته را به مقدار عدد صحیح تبدیل می کند. رشته ورودی باید دنباله ای از کاراکترها باشد که می تواند به عنوان یک عدد نقطه شناور تفسیر شود. این تابع پردازش کاراکترها را در اولین رشته ای که نمی تواند به عنوان بخشی از عدد تشخیص دهد، متوقف می کند.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_atoi (void) { int i; char s [] = "12345"; i = atoi (s); printf ("ATOI(%s) = %d\n", s, i); }
خروجی کد بالا به صورت زیر است.
ATOI(12345) = 12345
-
long int atol(const char *str)
تابع atol رشته را به یک مقدار عدد طولانی تبدیل می کند. رشته ورودی باید دنباله ای از کاراکترها باشد که می تواند به عنوان یک عدد نقطه شناور تفسیر شود. این تابع پردازش کاراکترها را در اولین رشته ای که نمی تواند به عنوان بخشی از عدد تشخیص دهد، متوقف می کند.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_atol (void) { long l; char s [] = "80034880"; l = atol (s); printf ("ATOL(%s) = %ld\n", s, l); }
خروجی کد بالا به صورت زیر است.
ATOL(80034880) = 80034880
-
long int labs(long int x)
تابع labs مقدار مطلق طول عدد صحیح طولانی را تعیین می کند.
#include <math.h> #include <stdio.h> /* for printf */ void tst_labs (void) { long x; long y; x = -1234567L; y = labs (x); printf ("LABS(%ld) = %ld\n", x, y); }
خروجی کد بالا به صورت زیر است.
LABS(-1234567) = 1234567
- int rand(void)
تابع rand یک عدد شبه تصادفی بین ۰ تا ۳۲۷۶۷ تولید می کند.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_rand (void) { int i; int r; for (i = 0; i < 10; i++) { printf ("I = %d, RAND = %d\n", i, rand ()); } }
خروجی کد بالا عدد های شبه تصادفی خواهد بود.
-
float strtod(const char *str, char **endptr)
این تابع رشته ای را که آرگومان str به آن اشاره می کند به یک عدد نقطه شناور تبدیل می کند. اگر endptr برابر NULL نباشد ، یک نشانگر برای کاراکتر بعد از آخرین کاراکتر مورد استفاده در تبدیل در مکانی که توسط endptr به آن اشاره شده ذخیره می شود.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_strtod (void) { float f; char s [] = "1.23 other"; char *p; f = strtod (s, &p); printf ("strtod(%s) = %f\n", s, f); /* p points to " other" */ }
خروجی کد بالا به صورت زیر است.
strtod(1.23 other) = 1.230000
- long int strtol(const char *str, char **endptr, int base)
این تابع با توجه به مبنای داده شده ، قسمت اولیه رشته در str را به مقدار long int تبدیل می کند ،ورودی base باید بین ۲ تا ۳۶ یا مقدار ویژه ۰ باشد. تابع strtol مقدار صحیحی را که با تفسیر کاراکترها در رشته به عنوان یک عدد تولید می شود ، برمی گرداند.
#include <stdlib.h> #include <stdio.h> /* for printf */ void tst_strtol (void) { long l; char s [] = "-123456789 stuff"; char *p; l = strtol (s, &p, 10); printf ("strtol(%s) = %ld\n", s, l); /* p points to " stuff" */ }
خروجی کد بالا به صورت زیر است.
strtol(-123456789 stuff) = -123456789
با توجه به کامپایلری که از آن استفاده میکنید. ممکن است توابع دیگری نیز در این کتابخانه موجود باشد و یا برخی از توابع پشتیبانی نشود. برای مشاهده کل توابعی که در کتابخانه موجود است. بایستی وارد فایل هدر کتابخانه شده و توابع موجود را بررسی کنید. در این آموزش توابع کلیدی این کتابخانه مورد تحلیل و بررسی قرار گرفته شده است.
لوازم مورد نیاز
این کتابخانه نیاز به ماژول خاصی ندارد. همانطور که گفته شد تقریبا تمامی میکروکنترلر های موجود در بازار که با زبان C برنامه نویسی میشوند از این کتابخانه پشتیبانی میکنند. برای تهیه میکروکنترلر مود نظر خود میتوانید از طریق لینک زیر اقدام کنید.
جمع بندی
در این آموزش تحلیل و بررسی توابع موجود در کتابخانه stdlib.h که یکی از مهم ترین کتابخانه های زبان C و ++C به شمار می آید، پداختیم. این تابع عملیاته های مختلفی را برای ما انجام میدهد. و کمک میکند که کدنویسی را با سرعت بیشتری انجام بدهیم. از این پروژه میتوانید در پروژه هایی که نیاز به تبدیل رشته یا کد اسکی به عدد اعشاری یا صحیح و یا … دارید استفاده کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
کتابخانه stdlib.h برای دانلود وجود نداره داخل سایت
با سلام
همانطور که در متن آموزش گفته شده است. این کتابخانه نیاز به دانلود و نصب ندارد و همراه با کامپایلر نصب میشود.
سلام پس توابع malloc و … چی؟