[Powered by Google Translate] [ბრძანება ხაზი არგუმენტები]
[კრისტოფერ ბართლომე - ჰარვარდის უნივერსიტეტი]
[ეს არის CS50 - CS50.TV]
სასარგებლო ფუნქცია პროგრამა მიიღოს მომხმარებლის შეყვანის.
ჯერჯერობით ჩვენ შესწავლილი ზოგიერთი ფუნქციების ფარგლებში CS50 ბიბლიოთეკა
მიიღოს მომხმარებლის input, როგორიცაა "Get სიმებიანი,"
რომელიც თხოვს მომხმარებელს, ხოლო განაცხადის გაშვებული, ამისთვის სიმებიანი.
>> თუმცა, არის შემთხვევები, სადაც გსურთ მოგვაწოდოთ თქვენი პროგრამის შეყვანის
ადრე ეს რეალურად გაშვებული.
ეს გზა, თქვენ არ გჭირდებათ ვთხოვო დამატებითი ინფორმაცია თქვენი მომხმარებლის
ხოლო შესრულებაში მარტივი ამოცანა.
მიიღეთ, მაგალითად, MV ან ნაბიჯი სარდლობის UNIX.
ეს ბრძანება საშუალებას აძლევს მომხმარებელს გადაადგილება ფაილი ერთი ადგილიდან მეორეზე.
მიხედვით სახელმძღვანელო გვერდებზე, MV იღებს ორი ბრძანება ხაზი არგუმენტები:
ფაილი, რომელიც გადავიდა და საიდან ფაილი მიმდინარეობს გადავიდა.
ასე რომ, ეს მაგალითი გააჩნია ბრძანება ორი არგუმენტები.
ასე როგორ უნდა ვუთხრათ C პროგრამის გამოყენების ამ ბრძანების ხაზი არგუმენტები?
>> ისე, გამოდის, რომ მთავარი, რაც ჩვენ ვიყენებთ ყველა C პროგრამების, აქვს საიდუმლო.
მთავარი იღებს ორი პარამეტრი: argc და argv.
მოდით წავიდეთ ამ თვალსაზრისით.
>> პირველი პარამეტრი, argc, რომელიც დგას არგუმენტი რაოდენობა,
გააჩნია მონაცემები გაცნობის რიცხვი.
Argc პარამეტრი შეიცავს რაოდენობის არგუმენტები, მათ შორის ბრძანება.
ჩვენი ნაბიჯი ბრძანება, თუმცა ჩვენ მხოლოდ ორი არ არგუმენტები ნაჩვენები,
argc ღირებულების იქნება 3.
მეორე პარამეტრი, argv, რომელიც დგას არგუმენტი ვექტორი,
არის მასივი char პოინტერები რომ წერტილი სტრიქონები.
>> ეს იმას ნიშნავს, რომ თითოეულ ელემენტს argv, დაწყებული ნულიდან,
შეიცავს ბრძანება და არგუმენტები.
მაგალითად, argv [0], რომელიც მე ეხება როგორც argv ნულის
ყოველთვის შეიცავდეს ბრძანება, რომელიც აწარმოებს -
ამ შემთხვევაში, MV.
argv [1] შეიცავს პირველი არგუმენტი, file.txt,
და argv [2] შეიცავს მეორე არგუმენტი, ~ / cs50 /.
ბოლო არგუმენტი argv ყოველთვის იქნება null.
მოდით განახორციელოს ამ ბრძანების ხაზი არგუმენტები.
წინა წვრთნებს, ჩვენ განთავსებული ბათილად, რაც იმას ნიშნავს, არაფერი, როგორც ძირითადი ს პარამეტრი.
თუმცა, იმისათვის შესახებ, გამოვიყენოთ ბრძანება ხაზი არგუმენტები,
ჩვენ გვჭირდება ამოიღონ ბათილად და ადგილი შიგნით ძირითადი int argc, char * argv [].
ახლა, რათა შეამოწმონ მთელი ელემენტს საწყისი argv, რომლებიც თქვენი არგუმენტები,
შეგიძლიათ უბრალოდ iterate, ან loop მეშვეობით მასივი მოსწონს ეს.
ასე რომ, შიგნით ძირითადი სხეული, ჩვენ ვაპირებთ წავიდეთ წინ და ტიპის ამისთვის loop:
ამისთვის (int i = 0; i <argc, მე + +).
>> ჩვენ არ გვჭირდება Curly გაუწიოს აქ იმიტომ რომ ჩვენ მხოლოდ შესრულებაში ერთი ხაზი კოდი
ფარგლებში ორგანოს ამ loop.
ჩვენ წავიდეთ წინ და მოხვდა tab ერთხელ,
აკრიფეთ printf ("argv [% d], წარმოადგინოს მთელი ღირებულება,
არის% s, სიმებიანი, მაშინ ახალი ხაზი ხასიათი.
მაშინ ჩვენ უზრუნველყოფს printf მე მიმდინარე iteration of loop
და argv [i] ამისთვის სიმებიანი წარმომადგენლობა მიმდინარე ბრძანება ხაზი არგუმენტი.
როდესაც ჩვენ გაუშვით ორი არგუმენტები, ვნახავთ არგუმენტები მიმდინარეობს ნაჩვენები ტერმინალში.
მანამდე ჩვენ განაცხადა, რომ argv გაიმართა მასივი char პოინტერები.
>> ასე რომ, თუ ეს იმ შემთხვევაში, როგორ უნდა მაშინ შედიხართ ინდივიდუალური გმირები თითოეულ არგუმენტი?
მაგალითად, რა, თუ მინდოდა ვეძებოთ კონკრეტული პერსონაჟი პირველი არგუმენტი?
ისე, პასუხი არის, რომ ჩვენ უნდა მიმართოს წყობილი loop
რომ ამის შემდეგ iterate მეშვეობით თითოეულ ელემენტების არგუმენტი სიმებიანი.
ეს არის, თუ როგორ გავაკეთოთ.
>> პირველი, ჩვენ ვაპირებთ, რათა ასლი example2.c.
მაშინ, შიგნით პირველი მარყუჟის,
ჩვენ ვაპირებთ დაამატოთ დამატებითი სივრცე loop.
ასე რომ (int j = 0, n = strlen (argv [i]),
რომელიც შემდეგ გვაძლევს სიგრძე მიმდინარე არგუმენტი,
კ <n; j + +)
ჩვენ ვაპირებთ ბეჭდვა განთავსების თითოეული ხასიათი
შიგნით მიმდინარე არგუმენტი გამოყენებით printf.
ასე რომ, printf ("argv [% d], წარმოადგინოს მაჩვენებელი მიმდინარე არგუმენტი,
მაშინ [% d] კიდევ ერთხელ, რათა წარმოადგინოს მიმდინარე ხასიათი მიმდინარე არგუმენტი,
არის:% C, მიმდინარე პერსონაჟი არგუმენტი.
და ბოლოს, ჩვენ უზრუნველყოფს printf ერთად მაჩვენებელი გარე მარყუჟის, I,
მაშინ მაჩვენებელი შიდა loop.
>> და ჩვენი ბოლო არგუმენტი printf არის ფაქტობრივი ხასიათი არგუმენტი გათვალისწინებული
ბრძანებათა ზოლს.
ახლა, როდესაც მე სიმებიანი ფუნქცია strlen მოპოვება სიგრძეზე სიმებიანი,
მე უნდა დაამატოთ string.h ბიბლიოთეკა როგორც ჩვენი ქვეყნის მოიცავს.
ასე რომ, ამის გაკეთება, ჩვენ ახვიდეთ, და მხოლოდ ქვეშ stdio.h, ჩვენ ვაპირებთ
# Include .
>> ასე რომ, მოდით, კომპილირდება და აწარმოებს და უზრუნველყოს ის ფაქტობრივი არგუმენტი.
>> და, როგორც ვხედავთ, ჩვენ ახლა აქვს ზუსტი ადგილმდებარეობის თითოეული char in არგუმენტი.
ასე რომ ეს არის ის. მე კრისტოფერ ბართლომე, ეს არის CS50.
[CS50.TV]