Command Line Arguments in C

Command Line Arguments हा खरं तर C programming language मधील एक महत्वाचा पण कोणत्या ठराविक चॅप्टर मध्ये नसल्यामुळे न कळणारा टॉपीक. त्यामुळे Java language चे programs लिहायला सुरू झाल्यानंतर याची आठवण होते पण त्यावेळी वेळ निघुन गेलेली असते हा अनेक विद्यार्थ्यांचा अनुभव.

For more audio-visual contents visit http://www.cmarathionline.com

अर्थात command line arguments कळण्यासाठी अनेक चॅप्टर्सचे सखोल ज्ञान आवश्यक असल्याने, जर ते नसेल तर हा टॉपीक सुद्धा कळत नाही. म्हणजेच Command Line Arguments कळण्यासाठी….

  • फंक्शन चे सर्व concepts
  • C program चा Source Code ते Executable Program या सर्व stages
  • String व Array of Strings चे सर्व Concepts
  • DOS/UNIX/LINUX Operating System चे जुजबी ज्ञान व या operating systems चा Command Prompt
  • File Storage Structure

हे सर्व माहीत असावे लागेल.

Command Line

MS-DOS, UNIX, Linux या सारख्या operating system मध्ये text based input (Command) देण्याची व्यवस्था असते.

ubuntu command Prompt

Ubuntu command Prompt

UNIX Terminal Window

UNIX Command Prompt

Windows Command Prompt

Windows Command Prompt

याला Command Line Interface (CLI) असे सुद्धा म्हणतात. या ठिकाणी operating system ने command type करण्याची व्यवस्था केलेली असते. त्याला Command Prompt

Command Prompt

DOS Command prompt

असे म्हणतात.

GUI (Graphical User Interface) मध्ये mouse input असते तर या ठिकाणी commands type करून run करण्यासाठी ते लक्षात ठेवावे लागतात. Beginners Programmers याचा वापर करतांना कमी आढळतात तर seasoned programmers मात्र Command Prompt चा वापर जास्त प्रमाणात करतात कारण त्या मध्ये असलेल्या facilities मुळे.

C programs आपण ज्यावेळी लिहीतो त्यावेळी main function हा कोणत्याही C program चा अविभाज्य घटक आहे. Program चे execution सुद्धा main function पासून सुरू होते. main function मधून आपण अनेक library व User defined functions call करतो व असे करतांना त्या functions ना argument सुद्धा पाठवतो. असं जर असेल तर

  • main function ला सुद्धा arguments पाठवता येतात काय?
  • main function ला arguments कुठून पाठवायच्या?
  • त्या arguments कोणत्या प्रकारच्या असतात?
  • main function ला पाठवलेल्या arguments चा उपयोग काय?
  • कोणत्या situations मध्ये main function ला arguments पाठवायच्या?

याचा अभ्यास म्हणजे Command Line Arguments…!

C program आपण ज्यावेळी लिहीतो त्यावेळी Source Code ( .C file)  आपण एखाद्या folder मध्ये किंवा Directory मध्ये ठेवतो. Compile केल्यानंतर आपल्याला object file (.obj) तयार झालेली दिसते. व रन झाल्या नंतर executable file (.exe) मिळते. व शेवटी आपण executable file च रन करतो. या object file व executable files सुद्धा मशीन वर store होतात.

main function दोन arguments घेते. पहीले असते ते integer व दुसरे असते ते array of character pointers किंवा array of strings म्हणा हवं तर… Prototype च जर लिहायचा असेल तर तो

int main(int argc, char *argv[ ]);

किंवा

int main(int argc, char **argv);

असा लिहीता येइल. दोनही स्टेटमेंटचा अर्थ एकच आहे. याचा अर्थ आपण पुढे पाहू.

समजा आपण एक छोटासा प्रोग्रॅम (commandline.c) लिहीला जसे की…

#include<stdio.h>
int main(int argc, char *argv[ ])
{

int i;
printf(“Following arguments were sent by you to main function\n”);
for(i = 0; i< argc; i++)
{

printf(“%s “, argv[ i ]);

}
return 0;

}

तुम्ही gcc compiler वापरत असाल तर  हा प्रोग्रॅम तुम्ही कंपाइल केल्या नंतर त्याची executable सुद्धा तयार होइल.

तुम्ही जर DOS based TC compiler वापरत असाल तर program save, compile व make करून ठेवा. (या ठिकाणी तुम्ही program run करणार नाही आहात) येथून तुम्हाला मेनू मधील DOS shell या sub-menu वरून command prompt वर जाता येइल.

आता command prompt वर आपण executable file run करणार आहोत. तुम्ही जर TC वापरत असाल तर ज्या फोल्डर मध्ये executable save झाली असेल त्या Directory मध्ये जाउन तुम्हाला c:\> या Command prompt समोर

commandline C Marathi is Innovative Framework

असा command type करायला लागेल.

तुम्ही जर gcc वापरत असाल तर ज्या फोल्डर मध्ये executable save झाली असेल त्या Directory मध्ये जाउन तुम्हाला $ या Command prompt समोर

./commandline C Marathi is Innovative Framework

असा command type करायला लागेल.

या ठिकाणी तुम्हाला प्रोग्रॅम रन झाल्यानंतर

01

असे output मिळेल.

या ठिकाणी तुम्ही commandline C Marathi is Innovative Framework अशी स्ट्रींग भरली आहे. खर तर मेमरी मध्ये या अनेक strings स्टोअर होतात.  आता या सर्व स्ट्रिंग्स command line वर टाइप करतांना कमीत कमी एक space सोडून लिहीलेली असतात आणी प्रत्येक स्ट्रिंग Null Character insert करून एकत्र एकाच array मध्ये अथवा वेगवेगळ्या मेमरी location ला ठेवण्याचे काम operating system करते. हे सर्व operating system चे उद्योग असतात. व त्यामध्ये आपल्याला लक्ष घालण्याची गरज नाही.  नंतर प्रत्येक स्टिंग च्या base address चा array पाठवला जातो व तो आपण main मध्ये argv या array of character pointers मध्ये collect करत आहोत. आणी या command line arguments मध्ये एकूण ६ strings आहेत. त्यामुळे argc मध्ये 6 value store होते.

त्यामुळे

argv[0]   commandline या स्ट्रींगला पॉइंट करते
argv[1]   C या स्ट्रिंग ला पॉइंट करते
argv[2]   Marathi या स्ट्रिंगला पॉंइंट करते
argv[3]   is या स्ट्रिंग ला पॉइंट करते
argv[4]   Innovative या स्ट्रिंग ला पॉइंट करते
argv[5]   Framework या स्ट्रिंग ला पॉइंट करते

  1. main function किती arguments पाठवली आहेत ते check करू शकते व तीच value argc मध्ये ठेवते
  2. कमीत कमी 1 argument तर पाठवायला लागते जे प्रोग्रॅम file चे नाव असते (commandline वरील example मध्ये)
    प्रोग्रॅम त्याचे स्वत:चे नाव शोधून काढू शकते व ते arg[0] मध्ये ठेवते

मेन फंक्शनच्या आता आपण फक्त या सर्व स्ट्रिंग्स प्रिंट करण्याचे काम केले आहे. अर्थात जर तुम्ही loop counter 0 च्या ऐवजी 1 ला initialize केला तर फक्त C Marathi is Innovative Framework इतकेच print होइल.

Untitled

खुप विद्यार्थ्यांना argc आणी argv हे keywords आहेत अशी समजूत होते. main functions मधील

हि formal arguments आहेत त्यामुळे main function ची definition

int main(int count, char *ptr[ ] )
{

}

अथवा

int main(int count, char **ptr )
{

}

अशी लिहीली तरी चालते…!

अनेक कामे हि command prompt वरून करता येतात. जसे की ज्या वेळी तुम्ही

gcc hello.C -o hello 
हा कमांड देता त्यावेळी सुद्धा हा वरील command line सारखाच बघता येइल
किंवा 
ls -a किंवा 
ls -al 
हा कमांड हे सर्व command line arguments चे use आहेत. 

एखादा C प्रोग्रॅम आपण file copy किंवा file rename किंवा file merging साठी केला तर आपण command line arguments द्वारेच करतो.

One thought on “Command Line Arguments in C

  1. Pingback: Command Line Arguments in C | C Marathi™

Leave a comment