Command Line Argument ගැන කලින් ලියපු එක තේරුණද දන්නෙත් නැහැ. ඒක ගොඩක් අමාරු දෙයක් නෙමෙයි. තේරුම් ගන්න ලේසියි. දැන් ඉතිරි කොටස....
C පරිගණක භාෂාවේදී code එකක් execute කරන්න පටන් ගන්නකොටම ඒක ඇතුලට දත්ත දෙන්න පුළුවන් විදියක් ගැන තමා කලින් ලිපියේ විස්තර කළේ. මේ ලියන්න හදන්නේ code එක execute වෙන අතරතුර ඊට දත්ත ඇතුලත් කරන විදියක් ගැන. ඒ තමා scanf().
C පරිගණක භාෂාවේදී code එකක් execute කරන්න පටන් ගන්නකොටම ඒක ඇතුලට දත්ත දෙන්න පුළුවන් විදියක් ගැන තමා කලින් ලිපියේ විස්තර කළේ. මේ ලියන්න හදන්නේ code එක execute වෙන අතරතුර ඊට දත්ත ඇතුලත් කරන විදියක් ගැන. ඒ තමා scanf().
scanf() එකේ අරමුණ කිව්වනෙ ඉතින්. execute වෙන අතරතුර char, int, float වැනි විවිධ වර්ග වල දත්ත ලබාදීමට scanf() භාවිතයෙන් පුලුවන්. උදාහරණයක් අරගෙන මේ ගැන බලමු.
#include <stdlib.h>
int main()
{
char scan;
printf("Enter your letter : ");
scanf("%c",&scan);
printf("Your letter is %c\n",scan);
return 0;
}
ඉහත උදාහරණයේ ඇති code එකට අනුව මෙහිදී execution එක අතරතුර ලබා ගෙන ඇත්තේ char එකක්. scanf("%c",&scan) යන පේළියේ %c යන සංකේතයෙන් අරුත් ගැන්වෙන්නේ char අගයක් ලබාගන්නා බවයි. එය scan නම් විචල්යයට ආදේශ වේ. ඊට පෙර පේළියක scan නමින් විචල්යයක් program එකට හදුන්වා දී තිබෙනවා. scanf මගින් කෙරෙනුයේ execution එකේදී ලබා ගන්නා දත්තය, හදුන්වා දෙන ලද විචල්යයට ආදේශ කිරීමයි. එය ඉතාමත් සරල කරුණක්.
ඊට පසු පේළියේ ඇති printf එක මගින් එම scan නම් විචල්යය සරල ලෙස console එක මත පෙන්වීමට සලස්වා ඇත. එය විචල්යයේ අගය එසේ භාවිතා නොකර වෙනත් ඕනෑම කටයුත්තක් සදහා භාවිතා කිරීමට හැකියාවක් තියනවා.
එමෙන්ම char අගයක් execution එකේදී ඇතුල් කරනවාසේම අනෙක් වර්ගවල දත්ත ද ඇතුල් කිරීමට scanf() භාවිතයෙන් පුළුවන්. පෙර උදාහරණයේ %c ලෙස සදහන් සංකේතය වෙනුවට %d භාවිතා කිරීමෙන් int අගයක් මෙන්ම %f භාවිතා කිරීමෙන් float අගයක් ඇතුල් කිරීමට හැකියාවක් තියනවා. අප ඇතුලත් කිරීමට බලාපොරොත්තු වන දත්තයේ වර්ගයට අනුකූල වෙන විදියට විචල්යය හදුන්වා දීමට අපි සැලකිලිමත් විය යුතු වෙනවා. ඇතුළත් කරන දත්ත වර්ගය විචල්යයට සුදුසු දත්තයක් නොවේනම්, program එක විසින් compilation error හෝ runtime errors ලබා දීමට ඉඩ තියනවා. ඉතින් ඔන්න ඔහොමයි scanf() මූලික වශයෙන් යෙදෙන්නේ.....
int main()
{
char scan;
printf("Enter your letter : ");
scanf("%c",&scan);
printf("Your letter is %c\n",scan);
return 0;
}
ඉහත උදාහරණයේ ඇති code එකට අනුව මෙහිදී execution එක අතරතුර ලබා ගෙන ඇත්තේ char එකක්. scanf("%c",&scan) යන පේළියේ %c යන සංකේතයෙන් අරුත් ගැන්වෙන්නේ char අගයක් ලබාගන්නා බවයි. එය scan නම් විචල්යයට ආදේශ වේ. ඊට පෙර පේළියක scan නමින් විචල්යයක් program එකට හදුන්වා දී තිබෙනවා. scanf මගින් කෙරෙනුයේ execution එකේදී ලබා ගන්නා දත්තය, හදුන්වා දෙන ලද විචල්යයට ආදේශ කිරීමයි. එය ඉතාමත් සරල කරුණක්.
ඊට පසු පේළියේ ඇති printf එක මගින් එම scan නම් විචල්යය සරල ලෙස console එක මත පෙන්වීමට සලස්වා ඇත. එය විචල්යයේ අගය එසේ භාවිතා නොකර වෙනත් ඕනෑම කටයුත්තක් සදහා භාවිතා කිරීමට හැකියාවක් තියනවා.
එමෙන්ම char අගයක් execution එකේදී ඇතුල් කරනවාසේම අනෙක් වර්ගවල දත්ත ද ඇතුල් කිරීමට scanf() භාවිතයෙන් පුළුවන්. පෙර උදාහරණයේ %c ලෙස සදහන් සංකේතය වෙනුවට %d භාවිතා කිරීමෙන් int අගයක් මෙන්ම %f භාවිතා කිරීමෙන් float අගයක් ඇතුල් කිරීමට හැකියාවක් තියනවා. අප ඇතුලත් කිරීමට බලාපොරොත්තු වන දත්තයේ වර්ගයට අනුකූල වෙන විදියට විචල්යය හදුන්වා දීමට අපි සැලකිලිමත් විය යුතු වෙනවා. ඇතුළත් කරන දත්ත වර්ගය විචල්යයට සුදුසු දත්තයක් නොවේනම්, program එක විසින් compilation error හෝ runtime errors ලබා දීමට ඉඩ තියනවා. ඉතින් ඔන්න ඔහොමයි scanf() මූලික වශයෙන් යෙදෙන්නේ.....
එළ එළ දිගටම කරගෙන යන්න..
ReplyDelete(පොඩි ප්රශ්නයක් අහන්නද? ඇයි අපේ ගොඩක් අය මේ ටෙම්ප්ලේට් එකම පාවිච්චි කරන්නේ?)
උඔ කරන වැඩෙ සිරා මචo!!!
ReplyDelete@Sanj
ReplyDeleteඅනේ බං ඒක මම නම් හරියට දන්නේ නැහැ.
මම නම් ටක් ටික් ටුක් ගැනලා මේක තේරුවේ....
:P
Aniwaaaaaaaa...anagathaye oba deshapalanayata piwisyoth meeta wada sewawak kirmimata hakiya...ape amaththumath podikale ehemalu,....
ReplyDeleteඑල මචං.......
ReplyDeleteඋඹ ගොඩක් වටිනා වැඩකට අත ගහල තියෙන්නෙ
උඹේ මේ වැඩෙන් ප්රයෝජනයක් ගන්න උන් ගොඩක් ඉදීවි
දිගටම කරගෙන යමු........
@ලක්ඛණ
ReplyDeleteඒක ටිකක් තේරුණා බං....
පුළුවන් හැටියට ලියන්න උත්සහ කරන්නම්...
උඹේ අර examenakan එකත් පටන් ගනින් මචන්..
@මාධව
ReplyDeleteහ්ම් හ්ම්........ පටන් ගන්න ඕනි........
ගියපාර exam ඉවර උන නිසා ඒක නැවතුනේ.
දැන් ඉතින් ආයිත් exam එනවනෙ......
@ lakkan: ඔව් එකත් පටන් ගන්න. එකෙන් අපි ගොඩක් දේවල් ගත්තා.
ReplyDeletemachoo ubala karagenayana wadenam api wage unta mara gammak ban... oka digatama karagene palayan machoo...
ReplyDelete