[Powered by Google Translate] [خط فرمان آرگومان ها]
[کریستوفر بارتولومیو - دانشگاه هاروارد
[- CS50.TV این CS50]
یکی از ویژگی های مفید برای یک برنامه این است که به پذیرش ورودی کاربر است.
تا کنون، ما بعضی از توابع در کتابخانه CS50 بررسی
به پذیرش ورودی کاربر، مانند "رشته"
که باعث به کاربر، در حالی که برنامه در حال اجرا است، برای یک رشته است.
>> با این حال، مواردی وجود دارد که در آن شما می خواهید برای ورودی برنامه های خود را ارائه
قبل از آن است که در واقع در حال اجرا است.
به این ترتیب، شما لازم نیست که اطلاعات اضافی را به کاربر خود را بپرسید
در حالی که اجرای یک کار ساده است.
برای مثال، فشار متوسط ​​و یا دستور حرکت در UNIX است.
این دستور به کاربر اجازه می دهد که برای انتقال یک فایل از یک موقعیت به موقعیت دیگر است.
با توجه به صفحات کتابچه راهنمای کاربر، MV قبول دو استدلال خط فرمان:
فایل است که در حال نقل مکان کرد و به محل فایل است که به نقل مکان کرد.
بنابراین در این مثال یک فرمان با دو آرگومان است.
پس چگونه ما به برنامه های ما C برای استفاده از این خط فرمان استدلال؟
>> خوب، آن را معلوم می کند که اصلی، که ما آن را در تمام برنامه های C استفاده می کنید، یک راز است.
صفحه اصلی دو پارامتر: argc و argv را می پذیرد.
بیایید بیش از این شرایط.
>> اولین پارامتر argc، که مخفف تعداد بحث،
دارای یک نوع داده از نوع عدد صحیح است.
پارامتر argc شامل تعدادی از استدلال، از جمله فرمان است.
در فرمان حرکت ما، هر چند که ما تنها دو آرگومان نمایش داده می شود،
مقدار argc خواهد بود 3.
پارامتر دوم، ی argv که مخفف بردار استدلال،
آرایه ای از اشاره گر کاراکتر که اشاره به رشته است.
>> این به این معنی است که هر عنصر در argv، با شروع از صفر،
شامل فرمان و استدلال.
به عنوان مثال، ی argv [0]، که من به عنوان ی argv صفر مراجعه کنید.
همیشه از دستور است که در حال اجرا باشد -
در این مورد، میلی ولت بود.
ی argv [1] اولین آرگومان، file.txt باشد،
ی argv [2] آرگومان دوم باشد، ~ / cs50 /.
آخرین آرگومان و argv همیشه تهی باشد.
بنابراین اجرای این استدلال خط فرمان.
در تمرین قبلی، قرار گرفته است خالی باشد، به این معنی که هیچ چیز، به عنوان پارامتر اصلی.
با این حال، به منظور برای ما به استفاده از استدلال های خط فرمان،
ما نیاز به حذف باطل و مکان در داخل اصلی argc هوشمند، کاراکتر * argv [].
در حال حاضر، برای دسترسی به کل این عنصر از ی argv هستند که استدلال خود را،
شما به سادگی می توانید، تکرار یا حلقه، از طریق مجموعه ای شبیه به این.
بنابراین، در داخل بدنه اصلی، ما در حال رفتن به پیش بروید و نوع حلقه for:
برای (اعضای هیات من = 0؛ من argc، من + +).
>> ما می توانم در یک بریس فرفری در اینجا لازم نیست از آنجا که ما در حال اجرای یک خط از کد
در داخل بدن از این حلقه است.
ما پیش خواهیم رفت و تب یک بار،
پس از آن تایپ کنید printf ("ی argv [٪ d] را، برای نشان دادن یک مقدار عدد صحیح،
٪ S است، برای رشته، کاراکتر خط جدید است.
پس ما شما را به printf من برای تکرار حلقه
و ی argv [من] برای نمایش رشته ای از آرگومان خط فرمان.
هنگامی که ما آن را اجرا با دو آرگومان، ما استدلال که در ترمینال نمایش داده شده را ببینید.
پیشتر گفتیم که ی argv به آرایه ای از اشاره گرها کاراکتر برگزار.
>> بنابراین، اگر این مورد است، چگونه ما پس از آن شخصیت های منحصر به فرد در هر استدلال دسترسی داشته باشید؟
برای مثال، اگر من می خواستم برای یک شخصیت خاص در استدلال اول نگاه کنید؟
خب، پاسخ این است که ما نیاز به درخواست یک حلقه تو در تو
که پس از آن را از طریق هر یک از عناصر در رشته استدلال تکرار.
این است که چگونه شما آن را انجام دهد.
>> اول، ما قصد داریم به ایجاد یک کپی از example2.c.
سپس، در داخل اولین حلقه for،
ما قصد داریم برای اضافه کردن اضافی برای حلقه.
بنابراین برای (اعضای هیات J = 0، n = strlen (ی argv [])
که پس از آن به ما می دهد در طول بحث فعلی،
J <N، J + +)
ما قصد داریم تا در آن چاپ محل سکونت هر یک از شخصیت
در داخل از بحث فعلی با استفاده از printf.
بنابراین، printf ("ی argv [٪ d] را، به نمایندگی از شاخص از بحث فعلی،
سپس [٪ D] یک بار دیگر، برای نشان دادن شخصیت کنونی از بحث فعلی،
: c٪، برای شخصیت فعلی در بحث است.
در نهایت، ما شما را به printf با شاخص حلقه بیرونی، من،
سپس شاخص از حلقه درونی است.
>> و استدلال ما را به printf کاراکتر واقعی از استدلال ارائه شده است
در خط فرمان.
در حال حاضر، چون من با استفاده از رشته های تابع strlen برای به دست آوردن طول یک رشته،
من هم باید کتابخانه string.h به بالا شامل ما اضافه کنید.
بنابراین، برای انجام این کار، ما رو به بالا، و فقط تحت stdio.h، ما قصد داریم به انجام
# شامل .
>> بنابراین، اجازه دهید را کامپایل و اجرا کنید و از آن استدلال واقعی.
>> و همانطور که ما مشاهده می کنید، ما در حال حاضر محل دقیق هر یک از کاراکتر های فردی در استدلال است.
به طوری که در آن است. من کریستوفر بارتولومیو، این است CS50.
[CS50.TV]