آرگومانهای تابع اصلی (()main)
اولین تابع یک برنامه که اجرا می شود ، تابع ()main است . این تابع همانند
توابع دیگر می تواند دارای آرگومان باشد. آرگومان های تابع اصلی را آرگومان های
خط فرمان نیز می گویند . این نامگذاری بدین دلیل است که :
وقتی برنامه زبان C توسط کامپایلر زبان ترجمه شد ، این برنامه در خارج از
محیط C و در سطح سیستم عامل قابل اجرا است و در حین اجرای این برنامه اسامی
آرگومان ها نیز جهت انتقال به تابع اصلی ذکر می شوند . بعنوان مثال ، فرض کنید
برنامه ای بنام test.c نوشته ، توسط کامپایلر C آن را ترجمه کرده و برنامه ای به
نام test.exe از آن ساخته ایم . برای اجرای این برنامه کافی است در سطح سیستم
عامل بصورت زیر عمل کنیم (با فرض این که این برنامه در درایو جاری وجود دارد): A>test
اگر فرض شود که این برنامه دارای دو پارامتر باشد ، برای اجرای آن در سطح
سیستم عامل ، باید اسامی آرگومان ها را با یک فاصله بصورت زیر تایپ کنیم : A>test par1 par2
par1
و par2و اسامی آرگومان هایی هستند که به تابع اصلی منتقل می شوند .
تابع اصلی دارای دو پارامتر بنام های argcو argvو است . پارامتر argc از نوع
صحیح بوده و مشخص کننده تعداد آرگومان های خط فرمان است . چون نام برنامه به
عنوان یک آرگومان محسوب می شود لذا حداقل مقدارargc برابر با ۱ است . بنابراین
اگر برنامه ای مانند test دارای دو آرگومان باشد، عددی که در پارامتر argv قرار
می گیرد برابر با ۳ خواهد بود. پارامتر argv به آرایه ای رشته ای اشاره میکند که
عناصر آن ، به آرگومان های خط فرمان اشاره می کند . لذا کلیه آرگومان های تابع
اصلی بصورت رشته های فرض می شوند . بنابراین اگر خواسته باشیم از اعدادی که به
عنوان آرگومان به تابع اصلی منتقل می شوند استفاده کنیم ، باید به طریق مقتضی
( با استفاده از توابع کتابخانه ای و یا توابعی که خودمان می نویسیم ) آنها را
از رشته ای ، به عددی تبدیل کنیم .
مثال ۱: برنامه ای که نامی را به عنوان آرگومان پذیرفته و عبارت hello را در
جلوی آن نام قرار می دهد . main(argc/argv)
int argc ;
char *argv[] ;
{
if(argc!=2)
{
printf(“\n number of parameter “);
printf(“is wrong .” );
exit(0 );
}
printdf(“\n\n hello %s”/argv[1] );
}
فرض کنید نام برنامه مثال ۱را name.cا انتخاب کرده ، سپس توسط کامپایلر زبان C
از آن ، برنامه name.exe را ساخته باشیم . برای اجرای این برنامه کافیست به
صورت زیر عمل شود : A>name Ali
پس از اجرای برنامه name ، نتیجه زیر حاصل خواهد شد : hello Ali
در مورد ترتیب دسترسی به آرگومان های تابع اصلی باید دقت داشت که : argv[0]
بنام برنامه ، argv[1] به اولین آرگومان ، argv[2] به دومین آرگومان
و argv[n]به n امین آرگومان اشاره می کنند .
مثال ۲: برنامه ای که یک عدد را بعنوان آرگومان پذیرفته ، عمل شمارش معکوس از
آن عدد به صفر را انجام می دهد . این برنامه می تواند آرگومان دوم نیز داشته
باشد . اگر آرگومان دوم برابر با “display” باشد ، نتیجه شمارش معکوس در صفحه
نمایش چاپ خواهد شد . main(argc/argv)
int argc ;
char *argv[] ;
{
int disp/count ;
if(argc<=2)
{
printf(“\n number of parameter “);
printf(“is wrong .” );
exit(0 );
}
if(argc==3 && !strcmp[argv[2]/
“display”))
disp=1 ;
else
disp=0 ;
for(count=atoi(argv[1]);count
;– count)
if(disp)
printf(“\n %d “/count );
printf(“%c”/7 );
}
نمونه ای از خروجی برنامه مثال ۲ : C:\TC>6-23 5 display
5
4
3
2
1
در خروجی فوق ، ۵ عددی است که باید بطور معکوس شمارش شود و ۶-۲۳ نام برنامه
است .
در مورد مثال ۲ باید دو مطلب زیر را بخاطر داشت : ۱
تابع ()atoi یکی از توابع کتابخانه ای است که مقدار عددی رشته ای را به
مقدار عددی صحیح تبدیل می کند. بکار گرفتن این تابع بدین دلیل بود که عدد وارد
شده بعنوان آرگومان تابع که شمارش معکوس آن باید انجام شود ، بصورت رشته ای به
تابع اصلی منتقل خواهد شد که برای استفاده از آن ، باید بصورت عددی تبدیل شود. ۲
آخرین دستور ()printf پس از عمل شمارش معکوس جهت بصدا درآوردن زنگ سیستم
بکار گرفته شده است .
اگر آرایه argv با دو اندیس به کار گرفته شود ، موجب دسترسی به هر یک از
از کاراکترهای آرگومان تابع ( بطور جداگانه ) می گردد . ( مثال ۳ ) .
مثال ۳: برنامه ای که چگونگی دسترسی به هر یک از کاراکترهای آرگومان تابع
اصلی را نشان می دهد . main(int argc/char *argv[])
{
int t / i ;
if(argc<2)
{
printf(“number of parameters”);
printf(“is wrong.” );
exit(0 );
}
for(t=0 ; t
{
i=0 ;
while(argv[t][i])
{
printf(“\n %c “/argv[t][i] );
i++ ;
}
}
}
نمونه ای از خروجی برنامه مثال ۳ : C:\TC>6-24 allah
a
l
l
a
h
در مثال ۳ باید دقت داشت که اولین اندیس آرایه argv[] یعنی t به آرگومان
تابع اصلی ( مشخص کننده شماره آرگومان ) که یک رشته است اشاره می کند، و دومین
اندیس این آرایه به کاراکتری از این آرگومان اشاره می کند که شماره آن کاراکتر
با این اندیس مشخص می شود . بعنوان مثال ، منظور از argv[2][3] کاراکتر سوم از
آرگومان دوم می باشد .
از نظر تئوری می توان حداکثر از ۳۲۷۶۷ عدد آرگومان استفاده نمود که معمولا” تعداد را اجازه می دهد .
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن