1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [خط فرمان آرگومان ها] 2 00:00:02,000 --> 00:00:04,000 [کریستوفر بارتولومیو - دانشگاه هاروارد 3 00:00:04,000 --> 00:00:07,000 [- CS50.TV این CS50] 4 00:00:07,000 --> 00:00:11,000 یکی از ویژگی های مفید برای یک برنامه این است که به پذیرش ورودی کاربر است. 5 00:00:11,000 --> 00:00:15,000 تا کنون، ما بعضی از توابع در کتابخانه CS50 بررسی 6 00:00:15,000 --> 00:00:18,000 به پذیرش ورودی کاربر، مانند "رشته" 7 00:00:18,000 --> 00:00:23,000 که باعث به کاربر، در حالی که برنامه در حال اجرا است، برای یک رشته است. 8 00:00:23,000 --> 00:00:28,000 >> با این حال، مواردی وجود دارد که در آن شما می خواهید برای ورودی برنامه های خود را ارائه 9 00:00:28,000 --> 00:00:30,000 قبل از آن است که در واقع در حال اجرا است. 10 00:00:30,000 --> 00:00:34,000 به این ترتیب، شما لازم نیست که اطلاعات اضافی را به کاربر خود را بپرسید 11 00:00:34,000 --> 00:00:38,000 در حالی که اجرای یک کار ساده است. 12 00:00:38,000 --> 00:00:42,000 برای مثال، فشار متوسط ​​و یا دستور حرکت در UNIX است. 13 00:00:42,000 --> 00:00:49,000 این دستور به کاربر اجازه می دهد که برای انتقال یک فایل از یک موقعیت به موقعیت دیگر است. 14 00:00:49,000 --> 00:00:55,000 با توجه به صفحات کتابچه راهنمای کاربر، MV قبول دو استدلال خط فرمان: 15 00:00:55,000 --> 00:01:00,000 فایل است که در حال نقل مکان کرد و به محل فایل است که به نقل مکان کرد. 16 00:01:00,000 --> 00:01:06,000 بنابراین در این مثال یک فرمان با دو آرگومان است. 17 00:01:06,000 --> 00:01:14,000 پس چگونه ما به برنامه های ما C برای استفاده از این خط فرمان استدلال؟ 18 00:01:14,000 --> 00:01:20,000 >> خوب، آن را معلوم می کند که اصلی، که ما آن را در تمام برنامه های C استفاده می کنید، یک راز است. 19 00:01:20,000 --> 00:01:26,000 صفحه اصلی دو پارامتر: argc و argv را می پذیرد. 20 00:01:26,000 --> 00:01:28,000 بیایید بیش از این شرایط. 21 00:01:28,000 --> 00:01:33,000 >> اولین پارامتر argc، که مخفف تعداد بحث، 22 00:01:33,000 --> 00:01:36,000 دارای یک نوع داده از نوع عدد صحیح است. 23 00:01:36,000 --> 00:01:42,000 پارامتر argc شامل تعدادی از استدلال، از جمله فرمان است. 24 00:01:42,000 --> 00:01:47,000 در فرمان حرکت ما، هر چند که ما تنها دو آرگومان نمایش داده می شود، 25 00:01:47,000 --> 00:01:50,000 مقدار argc خواهد بود 3. 26 00:01:50,000 --> 00:01:56,000 پارامتر دوم، ی argv که مخفف بردار استدلال، 27 00:01:56,000 --> 00:02:01,000 آرایه ای از اشاره گر کاراکتر که اشاره به رشته است. 28 00:02:01,000 --> 00:02:06,000 >> این به این معنی است که هر عنصر در argv، با شروع از صفر، 29 00:02:06,000 --> 00:02:09,000 شامل فرمان و استدلال. 30 00:02:09,000 --> 00:02:16,000 به عنوان مثال، ی argv [0]، که من به عنوان ی argv صفر مراجعه کنید. 31 00:02:16,000 --> 00:02:20,000 همیشه از دستور است که در حال اجرا باشد - 32 00:02:20,000 --> 00:02:22,000 در این مورد، میلی ولت بود. 33 00:02:22,000 --> 00:02:28,000 ی argv [1] اولین آرگومان، file.txt باشد، 34 00:02:28,000 --> 00:02:37,000 ی argv [2] آرگومان دوم باشد، ~ / cs50 /. 35 00:02:37,000 --> 00:02:42,000 آخرین آرگومان و argv همیشه تهی باشد. 36 00:02:42,000 --> 00:02:46,000 بنابراین اجرای این استدلال خط فرمان. 37 00:02:46,000 --> 00:02:53,000 در تمرین قبلی، قرار گرفته است خالی باشد، به این معنی که هیچ چیز، به عنوان پارامتر اصلی. 38 00:02:53,000 --> 00:02:57,000 با این حال، به منظور برای ما به استفاده از استدلال های خط فرمان، 39 00:02:57,000 --> 00:03:12,000 ما نیاز به حذف باطل و مکان در داخل اصلی argc هوشمند، کاراکتر * argv []. 40 00:03:12,000 --> 00:03:17,000 در حال حاضر، برای دسترسی به کل این عنصر از ی argv هستند که استدلال خود را، 41 00:03:17,000 --> 00:03:21,000 شما به سادگی می توانید، تکرار یا حلقه، از طریق مجموعه ای شبیه به این. 42 00:03:21,000 --> 00:03:27,000 بنابراین، در داخل بدنه اصلی، ما در حال رفتن به پیش بروید و نوع حلقه for: 43 00:03:27,000 --> 00:03:37,000 برای (اعضای هیات من = 0؛ من argc، من + +). 44 00:03:37,000 --> 00:03:41,000 >> ما می توانم در یک بریس فرفری در اینجا لازم نیست از آنجا که ما در حال اجرای یک خط از کد 45 00:03:41,000 --> 00:03:44,000 در داخل بدن از این حلقه است. 46 00:03:44,000 --> 00:03:47,000 ما پیش خواهیم رفت و تب یک بار، 47 00:03:47,000 --> 00:03:57,000 پس از آن تایپ کنید printf ("ی argv [٪ d] را، برای نشان دادن یک مقدار عدد صحیح، 48 00:03:57,000 --> 00:04:06,000 ٪ S است، برای رشته، کاراکتر خط جدید است. 49 00:04:06,000 --> 00:04:12,000 پس ما شما را به printf من برای تکرار حلقه 50 00:04:12,000 --> 00:04:18,000 و ی argv [من] برای نمایش رشته ای از آرگومان خط فرمان. 51 00:04:18,000 --> 00:04:25,000 هنگامی که ما آن را اجرا با دو آرگومان، ما استدلال که در ترمینال نمایش داده شده را ببینید. 52 00:04:34,000 --> 00:04:38,000 پیشتر گفتیم که ی argv به آرایه ای از اشاره گرها کاراکتر برگزار. 53 00:04:38,000 --> 00:04:45,000 >> بنابراین، اگر این مورد است، چگونه ما پس از آن شخصیت های منحصر به فرد در هر استدلال دسترسی داشته باشید؟ 54 00:04:45,000 --> 00:04:51,000 برای مثال، اگر من می خواستم برای یک شخصیت خاص در استدلال اول نگاه کنید؟ 55 00:04:51,000 --> 00:04:55,000 خب، پاسخ این است که ما نیاز به درخواست یک حلقه تو در تو 56 00:04:55,000 --> 00:04:59,000 که پس از آن را از طریق هر یک از عناصر در رشته استدلال تکرار. 57 00:04:59,000 --> 00:05:02,000 این است که چگونه شما آن را انجام دهد. 58 00:05:02,000 --> 00:05:10,000 >> اول، ما قصد داریم به ایجاد یک کپی از example2.c. 59 00:05:10,000 --> 00:05:13,000 سپس، در داخل اولین حلقه for، 60 00:05:13,000 --> 00:05:15,000 ما قصد داریم برای اضافه کردن اضافی برای حلقه. 61 00:05:15,000 --> 00:05:28,000 بنابراین برای (اعضای هیات J = 0، n = strlen (ی argv []) 62 00:05:28,000 --> 00:05:32,000 که پس از آن به ما می دهد در طول بحث فعلی، 63 00:05:32,000 --> 00:05:39,000 J 00:05:43,000 ما قصد داریم تا در آن چاپ محل سکونت هر یک از شخصیت 65 00:05:43,000 --> 00:05:47,000 در داخل از بحث فعلی با استفاده از printf. 66 00:05:47,000 --> 00:05:57,000 بنابراین، printf ("ی argv [٪ d] را، به نمایندگی از شاخص از بحث فعلی، 67 00:05:57,000 --> 00:06:05,000 سپس [٪ D] یک بار دیگر، برای نشان دادن شخصیت کنونی از بحث فعلی، 68 00:06:05,000 --> 00:06:13,000 : c٪، برای شخصیت فعلی در بحث است. 69 00:06:13,000 --> 00:06:20,000 در نهایت، ما شما را به printf با شاخص حلقه بیرونی، من، 70 00:06:20,000 --> 00:06:22,000 سپس شاخص از حلقه درونی است. 71 00:06:22,000 --> 00:06:28,000 >> و استدلال ما را به printf کاراکتر واقعی از استدلال ارائه شده است 72 00:06:28,000 --> 00:06:31,000 در خط فرمان. 73 00:06:31,000 --> 00:06:37,000 در حال حاضر، چون من با استفاده از رشته های تابع strlen برای به دست آوردن طول یک رشته، 74 00:06:37,000 --> 00:06:43,000 من هم باید کتابخانه string.h به بالا شامل ما اضافه کنید. 75 00:06:43,000 --> 00:06:50,000 بنابراین، برای انجام این کار، ما رو به بالا، و فقط تحت stdio.h، ما قصد داریم به انجام 76 00:06:50,000 --> 00:06:57,000 # شامل . 77 00:06:57,000 --> 00:07:02,000 >> بنابراین، اجازه دهید را کامپایل و اجرا کنید و از آن استدلال واقعی. 78 00:07:09,000 --> 00:07:18,000 >> و همانطور که ما مشاهده می کنید، ما در حال حاضر محل دقیق هر یک از کاراکتر های فردی در استدلال است. 79 00:07:18,000 --> 00:07:23,000 به طوری که در آن است. من کریستوفر بارتولومیو، این است CS50. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]