2 00:00:00,000 --> 00:00:02,470 >> დინამიკები 1: მოდით დავწეროთ პროგრამა, რომელიც თხოვს მომხმარებელს სახელები და 3 00:00:02,470 --> 00:00:03,990 სახლები სამი სტუდენტებს. 4 00:00:03,990 --> 00:00:07,300 მაგრამ ვიდრე უბრალოდ ამობეჭდოთ მათ სახელები და სახლები ეკრანზე, მოდით 5 00:00:07,300 --> 00:00:09,660 ნაცვლად გადარჩენა, რომ ინფორმაცია დისკზე. 6 00:00:09,660 --> 00:00:14,530 სხვა სიტყვებით, მოდით შევქმნათ, ვთქვათ, CSV ფაილის, მძიმით გამოყოფილი მნიშვნელობები, 7 00:00:14,530 --> 00:00:17,720 რომელიც რეალურად მხოლოდ ტექსტური ფაილი, პროგრამები, როგორიცაა Excel ან ნომრები 8 00:00:17,720 --> 00:00:21,690 შეუძლია გახსნას და ეფექტურად გადარჩენა იმ სახელები და სახლები მუდმივად ისე, რომ 9 00:00:21,690 --> 00:00:23,220 ჩვენ შეგვიძლია განიხილავს მათ მოგვიანებით. 10 00:00:23,220 --> 00:00:25,960 >> ამისათვის, მოდით პირველი შევხედოთ ზოგიერთი boilerplate კოდი, რომელიც მე 11 00:00:25,960 --> 00:00:27,650 დაიწყო უკვე. 12 00:00:27,650 --> 00:00:32,380 ყურადღება მიაქციეთ, პირველი, რომ მათ შორის headers up ზედა არის სტანდარტული lib.h რომელიც 13 00:00:32,380 --> 00:00:36,710 ხდება გარკვეული დაკავშირებული ფუნქციები შეიტანოს I / O, ფაილის შემავალი და გამომავალი. 14 00:00:36,710 --> 00:00:39,560 გაითვალისწინეთ, რომ მე ასევე განაცხადა, მუდმივი მოუწოდა სტუდენტებისთვის - 15 00:00:39,560 --> 00:00:42,380 ყველა caps - რომლის ღირებულება რთულია კოდირებული როგორც სამი. 16 00:00:42,380 --> 00:00:45,820 ყურადღება მიაქციეთ, რომ შიგნით ჩემი მთავარი პროგრამა, მე გამოცხადების მასივი 17 00:00:45,820 --> 00:00:50,270 ზომა სამი გამოყენებით, რომ მუდმივი მოუწოდა სტუდენტური თითოეულ რომლის წევრებიც არის 18 00:00:50,270 --> 00:00:51,650 ჩაწერეთ სტუდენტებს. 19 00:00:51,650 --> 00:00:56,150 >> შეგახსენებთ, რომ სტუდენტური ჩვენ განსაზღვრავს როგორც სახელი და სახლის ორივე 20 00:00:56,150 --> 00:01:00,410 რომლებიც strings როგორც პოსტი ამ დეკლარაცია ავალებს, dot h. 21 00:01:00,410 --> 00:01:04,680 ახლა structs1.c შეამჩნევთ, რომ მე არ მარყუჟი, რომ აპირებს 22 00:01:04,680 --> 00:01:06,750 iterate ნულიდან სამ. 23 00:01:06,750 --> 00:01:10,020 ის აპირებს შეეკითხება ჩემთვის სტუდენტის სახელი და სტუდენტის სახლი 24 00:01:10,020 --> 00:01:12,310 ისევ და ისევ და ისევ. 25 00:01:12,310 --> 00:01:15,620 >> მაშინ ბოლოში ამ პროგრამის შეამჩნევთ, რომ მაქვს კიდევ ერთი მარყუჟის 26 00:01:15,620 --> 00:01:19,970 რომ აპირებს გასათავისუფლებლად შ სტუდენტის სახელი და შ სტუდენტის სახლი 27 00:01:19,970 --> 00:01:21,570 ანალოგიურად აშენებული loop. 28 00:01:21,570 --> 00:01:24,480 რა თქმა უნდა, ჩვენ შეგვიძლია დააკავშიროთ იმ მარყუჟების თარგმნეს მხოლოდ ერთი, მაგრამ მე მინდოდა 29 00:01:24,480 --> 00:01:28,180 აქვს რამდენიმე მკაფიო სეგმენტების კოდი გულისთვის დისკუსია აქ. 30 00:01:28,180 --> 00:01:31,920 >> ახლა მათ შორის, მარყუჟების, მოდით რეალურად კიდევ ერთი, და ამ ერთი 31 00:01:31,920 --> 00:01:35,210 მიზანი ცხოვრებაში არის რეალურად გადარჩენა ყველა ეს სახელები და სახლები, რომლებიც 32 00:01:35,210 --> 00:01:39,810 ამჟამად RAM დისკის სახით საქართველოს მძიმით გამოყოფილი მნიშვნელობები. 33 00:01:39,810 --> 00:01:42,080 ამისათვის, ჩვენ ვაპირებთ გამოვიყენოთ სამი ახალი ფუნქციები - 34 00:01:42,080 --> 00:01:47,450 F ღია, F printf და F ახლოს, რომელიც გახსნა ფაილი, ბეჭდვა ფაილი, და 35 00:01:47,450 --> 00:01:48,440 დახურეთ ფაილი. 36 00:01:48,440 --> 00:01:49,690 ჩვენ შეგვიძლია გამოვიყენოთ შემდეგი რედაქციით. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> ი, ყველა caps, რომელიც გარკვეულწილად ცნობისმოყვარეობა C, ფაილის იღებს fopen 39 00:01:58,240 --> 00:02:03,020 ციტირებით unquote და ახლა სახელი ფაილის, ვთქვათ, students.CSV, მაგრამ ვერ შევძელი 40 00:02:03,020 --> 00:02:08,150 ეძახით საუკეთესო არაფერს, მძიმე და ახლა მე აპირებს დააკონკრეტა ერთი w შიგნით 41 00:02:08,150 --> 00:02:09,390 ორმაგი შეთავაზებები. 42 00:02:09,390 --> 00:02:13,290 W, როგორც თქვენ ალბათ მიხვდა უკვე, იმას ნიშნავს, რომ fopen უნდა გახსნას ეს ფაილი 43 00:02:13,290 --> 00:02:17,360 ე.წ. Students.CSV წერა ასე რომ ჩვენ შეგვიძლია რეალურად შეინახოთ რამდენიმე 44 00:02:17,360 --> 00:02:19,370 შინაარსი მას. 45 00:02:19,370 --> 00:02:23,080 >> მოდით მომდევნო შემოწმებისას, თუ ფაილი არ არის ტოლი null. 46 00:02:23,080 --> 00:02:25,860 რადგან თუ ის არის, რაღაც, ალბათ, წავიდა არასწორი ამ შემთხვევაში ჩვენ 47 00:02:25,860 --> 00:02:28,340 არ უნდა მიიღოს ცდილობენ ბეჭდვა არაფერი მას. 48 00:02:28,340 --> 00:02:33,400 მაგრამ თუ ეს არ null, მაშინ შიგნით curly აფრთხილებს მე ვაპირებ iterate 49 00:02:33,400 --> 00:02:38,030 ეხლა i უდრის 0 მდე სტუდენტები, და მე ვაპირებ 50 00:02:38,030 --> 00:02:40,180 ნამატი i თითოეულ iteration. 51 00:02:40,180 --> 00:02:45,750 და შიგნით ამ მარყუჟის, ვაპირებ fprintf ისე, ბეჭდვა ფაილი - 52 00:02:45,750 --> 00:02:47,940 კონკრეტულად ერთი მე უკვე გახსნა - 53 00:02:47,940 --> 00:02:54,650 სიმებიანი რომ ასე გამოიყურება% s,% s backslash n ახლო გაცემა. 54 00:02:54,650 --> 00:02:58,790 >> და ახლა მინდა შეაერთედ თითოეულ იმ placeholders რეალურ ღირებულებებს 55 00:02:58,790 --> 00:03:03,390 სტუდენტის სახელი და სახლი გამოყენებით dot ოპერატორი. 56 00:03:03,390 --> 00:03:10,030 სტუდენტები bracket i.name, სტუდენტები bracket i.house ახლო paren 57 00:03:10,030 --> 00:03:11,230 ნახევრად მსხვილი ნაწლავის. 58 00:03:11,230 --> 00:03:16,180 ახლა ქვემოთ ამ for loop, მე უბრალოდ ვაპირებ მოვუწოდო fclose ფაილის მიზნით 59 00:03:16,180 --> 00:03:18,520 საბოლოოდ დახურეთ ფაილი. 60 00:03:18,520 --> 00:03:21,360 >> ახლა, როდესაც მე აწარმოებს ამ პროგრამის, მე არ უნდა რეალურად ვხედავ არაფერს 61 00:03:21,360 --> 00:03:25,010 ეკრანზე, მაგრამ მე უნდა შემდეგ გაშვებული ამ პროგრამის ფაილი სახელად 62 00:03:25,010 --> 00:03:29,130 Students.CSV იგივე დირექტორიაში, რომ მე აწარმოებს ბრძანება, რომ უნდა 63 00:03:29,130 --> 00:03:32,480 შეიცავს მძიმით გამოყოფილი სიაში ღირებულებებს. 64 00:03:32,480 --> 00:03:34,790 ავიღოთ სახეს. 65 00:03:34,790 --> 00:03:41,690 >> რათა structs 1. / Structs1 სტუდენტის სახელი, ვთქვათ, დავით, 66 00:03:41,690 --> 00:03:43,140 მაშინ ის ცხოვრობს Mather. 67 00:03:43,140 --> 00:03:46,890 სტუდენტის სახელი, ვთქვათ, ლორენ, იგი ყველაფერს ცხოვრობს LEVERETT. 68 00:03:46,890 --> 00:03:50,800 სტუდენტის სახელი, ვთქვათ, რობ, მაშინ ის ცხოვრობს Kirkland. 69 00:03:50,800 --> 00:03:54,050 ახლა, ისევ, როგორც მოსალოდნელი იყო, არაფერი არ ჩანს რომ არ მოხდა, მაგრამ ნება მომეცით 70 00:03:54,050 --> 00:03:58,790 წავიდეთ წინ იმ command prompt და ტიპი g რედაქტირება students.CSV იმედოვნებს, რომ 71 00:03:58,790 --> 00:04:00,850 რომ ფაილი ნამდვილად არსებობს. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, და მართლაც, შეამჩნია, რომ ფაილი, რომელიც შეიცავს წმინდა 73 00:04:07,010 --> 00:04:11,320 ტექსტი, მაგრამ ტექსტი მძიმით ყოველი ველი, მართლაც არსებობს. 74 00:04:11,320 --> 00:04:14,530 და თუ ჩვენ გამოყენებით, არ CS50 ელექტრო, მაგრამ უფრო ნაცნობი Mac ან 75 00:04:14,530 --> 00:04:18,080 PC, აღმოჩნდება, რომ ჩვენ შეგვიძლია ნამდვილად გახსნა ამ CSV ფაილი მეტი 76 00:04:18,080 --> 00:04:20,400 ნაცნობი პროგრამა მოსწონს Excel ან ნომრები. 77 00:04:20,400 --> 00:04:22,906