Pages

Wednesday, September 22, 2010

C භාවිතයෙන් Command Line Argument ලබා දීම


C පරිගණක භාෂාව ඉගෙනීමට පිවිසුමක් විදියට නම් මේ තැන ටිකක් ලොකු වැඩියි. ඒත් මේ වෙලාවේ මේ කොටස පොඩ්ඩක් වැදගත් කියලා හිතුනා. ඒකයි ලියන්න හිතුනේ... ඒත් පරිගණක භාෂාවක් ගැන සුළු හෝ දැනුමක් නොමැති අයෙකුට මේ ලිපියේ ගැටළු රැසක් ඇතිවෙන්න පුළුවන්. ඒ ගැන සමාව අයදිනවා මුලින්ම..


Command Line Argument එකකින් බලාපොරොත්තු වෙන්නේ, අපි විසින් ලියන ලද යම් කිසි code එකක් execute කිරීමට යාමේදීම ඒ තුළට යම්කිසි දත්තයක් ලබා දීමයි. C වලදී මෙම Command Line Argument එක ලබා ගන්නේ Char Array එකක් ආකාරයටයි. පහත උදාහරණය ආධාරයෙන් C වලදී එය සිදුකරගන්නා ආකාරය පිළිබද පැහැදීමටයි මේ උත්සාහය....

#include <stdio.h>

int main( int argc, char *argv[] ) 
{
     printf("%s",argv[1]);
     return 0;

}

මෙම ලිපියෙන් පැහැදීමට උත්සාහ ගන්නේ Command Line Argument ගැන නිසා ඒ පිළිබද පමණක් විසිතර කරන්නම්. මෙහිදී argc යනුවෙන් int විචල්‍යයක් සහ argv ලෙස char array එකක් හදුන්වා දී තිබෙනවා. එම int විචල්‍යයෙන් argument කීයක් char array එකට ගන්නවාද යන දදත්තය ලබා ගන්නා අතර char array මගින් එම argument එක ගැන තොරතුර ලබා ගන්නවා. ඉහත සදහන් වෙන මෙම code එක ./first යන විධානයෙන් execute කරනවා යැයි උපකල්පනය කරමු. මෙහිදී මම පළමු Argument එක Madhawa ලෙස ලබා දෙන්නම්. ඒ පහත ආකාරයටයි. 


ඉන්පසු මෙම code එක මගින් අපට පළමු Argument එක පාවිච්චි කරන්න අවශ්‍ය නම් එය Code එක තුළදී argv[1] ලෙස භාවිතයට ගත හැකියි. ඉහත උදාහරණයේ සිදුකර ඇත්තේ එම Code එක Execute වෙන වෙලාවේදී මා විසින් ලබා දුන් පළමු Argument එක නැවත Terminal එක මත පෙන්වීමයි. Java යන පරිගණක භාෂාව ඔබ දන්නවා නම් දැන් ඔබට ගැටලුවක් ඇති වේවි argv[0] ලෙස යොදා නොගන්නේ ඇයිද යන්න. නිකමට වගේ ඒ ගැනත් බලන්න. C වලදී code එක execute කිරීමට ලබා දෙන ./first (ඉහත උදාහරණය අනුව) යන කොටසද සලකනු ලබන්නේ Command Line Argument එකක් ලෙසයි. යම්හෙයකින් ඔබ code එක තුළදී argv[0] මුද්‍රණය වීමට සකස්කර තිබුණි නම් ඔබට එහි ප්‍රතිළුලය ලෙස ./first ලෙස මුද්‍රණය වනවා දැකිය හැකියි. Argument එකක් භාවිතා කළ හැකි ඉතාම සරළතම ආකාරයක් විතරයි.


මේ දෙවනි උදාහරණය භාවිතයෙන් argc ලෙස පළමු උදාහරණයේ භාවිතා වෙලා තියන int විචල්‍යය භාවිතා කළ හැක්කේ මොන ආකාරයකටද යන්න පැහැදිලි කිරීමට උත්සහ ගන්නම්.

#include <stdio.h>


int main( int argc, char *argv[] ) 
{
    if( argc == 2 )
        printf("The argument supplied is %s\n", argv[1]);
    else if( argc > 2 )
        printf("Too many arguments supplied.\n");
    else
        printf("No arguments\n");
   
    return 0;
}

මෙම code එක ඔබට පැහැදිලි ඇතැයි විශ්වාස කරනවා. මෙහි ඇත්තේ සරල ලෙස භාවිතාකර ඇති if එකකි. මෙහි පරීක්ෂා කර ඇත්තේ argc හි අගය 2ට සමානද යන කරුණයි. මෙහිදීද ඉහත සදහන් කළ කරුණ එලෙසම අදාල වේ. අප භාවිතා කරන්නේ එක Argument එකක් වුවද C වලදී Code එක execute කිරීමට භාවිතා කරන විධානය එක් Argument එකක් ලෙස සලකන නිසා සියලුම Argument ගණන දෙකක් වේ. මේ C භාෂාවේ විශේෂත්වයකි. ඉතින් Command Line Argument ගැන කෙටියෙන් කිව්වා ඔන්න.....

10 comments:

  1. Thanks a lot friend.
    Better you explained this argc a bit more

    ReplyDelete
  2. Thanks a lot Sanj for ur comment on this post :)

    ReplyDelete
  3. ela...................
    nice work.........
    keep it up.....

    ReplyDelete
  4. ela machan.....
    uba methanadi command line argument gana witharak wistara karapu eka hodai...clear idea ekak aawa,,,,naththan anith eaawath ekka patelenawa,,,,

    ReplyDelete
  5. godk tanx yaluwe oyt. godak hoda wadak meka.

    ReplyDelete
  6. ela... api meeka digatama karagena yamu... ok..

    ReplyDelete
  7. ඔව් මචන්.... උත්සහයක් ගමු දිගටම කරගෙන යන්න..

    ReplyDelete
  8. ගොඩක් වටිනවා.දිගටම කරගෙන යන්න සුභ පතනවා

    ReplyDelete

ඔබගේ අදහස් පවසන්න ...
මට ඒව මසුරන් වටිනවා ....