July 19, 2013

C libraries සහ C standard library ගැන පොඩ්ඩක්...

මෙන්න මගේ පලවෙනි post එක ලියන්නයි යන්නෙ මං මේ blog එකේ කලින් ලියල නෑ මුලින්ම ඇවිත් ඉතින් වැඩි කතා නැතුව CSinhalen එකේ කාටත් ආයුබෝවන් කියලා C වලදී නැතුවම බැරි code කොටසක් ගැන කියන්නයි හැදුවෙ. ඔන්න මේ කියන්න යන්නෙ අපි C code එකක් ලිව්වොත් අනිවාර්යයෙන් උඩින් දාන්න වෙන #include එක ගැන.

දැන් කිව්ව code කොටස දැකල ඇතිනේ. අපි ඔය #include එකෙන් කරන වැඩේට ගැළපෙනම උදාහරණෙ තමයි java වල import statement එක. ඒකෙන් කරන්නෙ oracle හෝ sun predefined java packages and classes අපි වැඩ කරන file එකට ගෙන්වාගන්න එක. අපි C වලදීත් ඕක තමයි කරන්නෙ #include එකෙන්.


ඔන්න ඉතින් C කියන්නෙ අයිති කාරයෙක් නැති language එකක්. මේකට අයිතිකාරයෙක් වෙනුවට තියෙන්නෙ committee එකක්. ඒ committee එක තමයි C පිලිබඳ තීන්දු තීරණ ගන්න ඉන්නෙ. C ආපු ගමන්ම මේ committee එකත් ආවෙ නැති හින්දා කාලයක් C තිබුනේ C users ලා මත තමයි. එහෙම තිබුන නිසා එක එක users ලා තාම තමන්ට අවශ්‍ය විදියට library files හදාගෙන C වලට add කළා. Library එකක් කියන්නෙ programming language වලදී predefined code set එකක්. ඉතින් මෙහෙම add වෙන්න ගත්තම C වල size එක වැඩි වුණා. එකම දේ duplicate වුණා. C මහා ජරාවක් වුණා.
මෙතැනදී තමයි C committee එක හැදුනෙ. කවුරුහරි C ට ආදරේ කෙනෙක් හදන්න ඇති. ඒකෙන් වැඩක් නෑ, මේගොල්ලෝ තමයි ඊළඟට C වල තිබුන වැඩකට නැති ඒවා අයින් කරලා දාලා හොඳ, වැඩකට ඇති, internationally users ලට බෙදන්න පුළුවන් libraries ටිකක් C තුල ඉතුරුකර ගත්තෙ. අපි දැන් කලින් කිව්ව libraries මෙයාල විසින් තමා ලබාදීල තියෙන්නෙ. දැන් committee එකෙන් වැඩක් නෑ libraries ගැන බලමු.


අපි C විතරක් install කරාම අපිට ලැබෙන ප්‍රධානම එක තමයි C standard library කියන්නෙ. මේකේ තියෙන්නෙ standard operations and commands වලට අයිති වෙන දේවල් තමයි. C library එකක් ගත්තම ඒක ඇතුලේ header files තියෙනවා, නිකන් java packages ඇතුලේ classes තියෙනවා වගේ. අපි මේ header file එකේ නම තමයි include statement එකට ලබා දෙන්නෙ. එතකොට එයා standard library එකෙන් ඒ නම තියෙන file එකේ තියෙන instructions ලබා ගන්නවා.


අපි දැකල තියෙනවා C වලදී එක එක header file names, මෙන්න මේ වගේ...
stdio.h,  stdlib.h,  ctype.h,  string.h,  math.h,  time.h,  etc...

මෙන්න මේ විදියට තමයි අපි මේවා අපේ file එකට ගෙන්න ගන්නේ...
#include
අපි අපේ C code එක තුල ලියන statements අනුව අපිට include කරන්න වෙන libraries වෙනස් වෙනවා. මේවා code එකට include කර ගත්තම අපිට ඒකෙන් functions ලබා දෙනවා වැඩ කරන්න.ඒ කියන්නෙ ඉතින් අපිටම තමයි පහසුව. Functions විතරක්ම නෙමේ තියෙන්නෙ හොඳද තව macros and variables මේවා ඇතුලේ තියෙනවා, දැනට ඕන නෑ.

උදාහරණයක් විදියට ඔයා C code එකේ input and output විධාන දෙනවනම් ඒවා ගැන අපේ C file එකට කියාදෙන stdio.h (Standard input output) කියන header file එක include කරන්න ඕනි. ඒක නැතුව මෙයා දන්නේ නෑ කොහොමද ඒවා තනියම කරගන්නෙ කියලා. ඔයා ඔයාගේ C code එකේ printf(), scanf(), putchar(), gets(), fclose() වගේ ඒවා ඇතුලත් කරනවානම් stdio.h include නොකර කවදාවත් compile කරන්න බෑ. ඒ header එක නැතුව එයා ඒවා දන්නෙ නෑ.

එතකොට ඔයා string සම්බන්ධ code එකක් ලියනවනම් ඒ ගැන උදවු තියෙන්නෙ string.h එකේ, ඔයා pointers වලින් වැඩ ගනිද්දි convert කරන්න ඕනවෙන atoi(), atof(), strtod(), strtol() වගේ ඒවා තියෙන්නෙ stdlib.h file එකේ. දැන් ඉතින් C pointers ගැන දන්නෙ නැත්නම් අවුලක් කරගන්න එපා, ඒක තවත් ලොකු පාඩමක්. දැනට මේක බලාගමු.
math.h කියන්නෙ මමත් ආස කරන තව හොද header file එකක්. මේකේ ලබාදීල තියෙනවා ගොඩක් mathematical operations වලට functions. fmod(), sqrt(), log(), log10() වගේ functions ගොඩක් මේක ඇතුලේ තියෙනවා.

පහලින් තියෙනවා C standard library එකේ එක එක header files අපි include කරගන්න ඕන මොකටද කියලා. Functions වෙන වෙනම ගැන කිව්වොත් නම් මේ post එක හොදට තියෙයි. ඒක නිසා මම නවතින්න කලින් මේක දිගටම පහලට කියවන අයට functions ගැන උදව්වක් දෙනවා. හැබැයි ඉතින් මෙතන තියෙන්නෙ C standard library එකේ තියෙන ඔක්කොම headers නම් නෙමෙයි. වැදගත් වන ටිකක් විතරයි.


assert.h - Pragram එක තුල programmer සිදුකරන assumptions තහවුරු කරගැනීම කරන්නෙ මේකෙන් තමයි. මේක debugging වලට අදාලයි.
ctype.h - char පාවිච්චි කරනකොට මේක ඕනවෙනවා. මේ file එකේ තියෙන isupper(), toupper(), isalpha(), etc. වගේ functions වලින් char values check and format කරගන්න පුළුවන්.
errno.h - System errors හඳුනගෙන ඒවට අදාලව int එකක් return කරන්න මේකේ තියෙන macro වලට පුළුවන්.
float.h - Floating point values හා සම්බන්ධ functions and constants set එකක් මෙම header file එක තුල ඇතුලත් වෙනවා.
limits.h - Variable types වල limits, නැත්නම් variable properties සහිත macros මේ තුල define කරලා තියෙනවා.
locale.h - විවිධ date formats and currency ගැන මේකේ තමා විස්තර තියෙන්නෙ.
math.h - මෙහි mathematical funcions බොහොමයක් අඩංගුයි. විශේෂත්වය තමයි ඔක්කොම parameters and return types double වීම.
setjmp.h - Process එක්ක වැඩ කරද්දි භාවිතා වෙනවා.
signal.h - Execution signals සමග කටයුතු කිරීමට අවශ්‍යයි.
stdarg.h - නොදන්නා arguements ප්‍රමාණයක් ලබාදෙන ආකාරයට function ලිවීමේදී මෙය ඇතුලත් වනවා. (allows functions to accept an indefinite number of arguements) Java වල var args වගේ තමයි.
stdio.h - System input and output methods සමග වැඩ කරන්න මේක include වෙලා තියෙන්න ඕන.
stdlib.h - Random number generation, number conversion සඳහා අවශ්‍යයි.
string.h - String සමග වැඩ කරන්න මෙම library එකෙන් තමයි instructions ලබා දෙන්නෙ.
time.h - Date and time අවශ්‍ය වුනොත් system එකෙන් ඒවා ගන්න නම් මෙය ඕන වෙනවා.
stdbool.h - boolean type එකෙන් process එක control වන හැටි මෙය තුල අඩංගුයි. C වල boolean data type එකක් නැති උනත් ඒ හා සම්බන්ධ operations කරන්න පුළුවන්. උදාහරණයක් විදියට if/else C තුලදී වැඩ නෙ.
complex.h - සංකීර්ණ සංඛ්‍යා (complex numbers) handle කරන්න කියල දෙන්නෙ මෙයා.



ඔන්න ඉතින් ඔය වගේ headers ගොඩක් තියෙනවා. වෙනත් library එකක් සැලකුවොත් ඒකෙත් තව headers තියෙනවා. ඕව ඔක්කොම ඕන නෑ, හැබැයි basically ටිකක් මතක තියාගන්න නම් අනිවාර්යයෙන් ඕන. Netbeans, C-Free, CodeBlocks වගේ IDE එකක් භාවිතා කරනවානම් ඒවා coding කරන් යනකොට ඉබේම include කරලා දෙනවා. ඒත් compile error එකක් ආවම confuse වෙනවට වඩා ටිකක් මතක තියාගෙනම ඉන්න එක තමයි වාසි.


මම කියපු පොඩිම පොඩි උදව්ව විදියට මෙන්න මෙතන පහලින් දීල තියෙන ඒවට ගිහින්  C standard library එක ගැන කියවන්න. ඕන අවුලක් ආවොත් හරි තවදුරටත් දැනගන්න හිතුනොත් හරි ඒක google කරන්න. නැත්නම් comment එකක් දාලා යන්න. Admin board එකෙන් දැක්කම දන්න දෙයක් නම් කවදාවත් නොකිය ඉන්නෙ නෑ.

 http://www.tutorialspoint.com/c_standard_library/string_h.htm
 http://en.wikipedia.org/wiki/C_standard_library
 http://en.cppreference.com/w/c/header
 http://en.wikibooks.org/wiki/C_Programming/Standard_libraries




දැනට ඉවරයි, තව post එකකින් තමයි එන්න වෙන්නෙ. කියෙව්වට thanks, Cheers!
BV


0 comments:

Post a Comment

image

About C

C is a good language for hardware based applications and is the base of the best selling Windows OS. And is a key subject to most of the university students.

image

About us

We are students from an institute of software engineering, Sri Lanka, and we aim to make this the best blogspot for C language. Thanks!