1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> დინამიკები: ჯერჯერობით, ეს სავარაუდოდ, რომ ყველაზე თქვენი პროგრამები 3 00:00:07,870 --> 00:00:10,170 უკვე ცოტა ეფემერული. 4 00:00:10,170 --> 00:00:13,310 თქვენ აწარმოებს პროგრამა მოსწონს Mario და ხარბ. 5 00:00:13,310 --> 00:00:17,350 ეს იმას, რომ რაღაც, იქნებ მოთხოვნა მომხმარებლის გარკვეული ინფორმაცია, 6 00:00:17,350 --> 00:00:20,400 ბეჭდვა ზოგიერთი გამომავალი ეკრანზე, მაგრამ მაშინ, როცა თქვენი პროგრამა დასრულდა, 7 00:00:20,400 --> 00:00:23,252 იქ ნამდვილად არ მტკიცებულება არსებობს იგი ოდესმე აწარმოებს, პირველ რიგში. 8 00:00:23,252 --> 00:00:25,960 ვგულისხმობ, რა თქმა უნდა, თქვენ შეიძლება არ დაუტოვებიათ ის გახსნა ტერმინალის ფანჯარა, 9 00:00:25,960 --> 00:00:29,770 მაგრამ თუ გარკვევა თქვენს ეკრანზე, არსებობს ნამდვილად არსებობს მტკიცებულება, რომ იგი არსებობდა. 10 00:00:29,770 --> 00:00:33,720 ჩვენ არ გვაქვს საშუალება შენახვის მუდმივი ინფორმაციას, 11 00:00:33,720 --> 00:00:36,890 რომ არსებობს მას შემდეგ, რაც ჩვენი პროგრამა შეწყდა, 12 00:00:36,890 --> 00:00:39,241 ან ჩვენ არ გვაქვს, რომ ამ ეტაპზე. 13 00:00:39,241 --> 00:00:41,490 საბედნიეროდ, თუმცა, გ აკეთებს მოგვაწოდოთ უნარი 14 00:00:41,490 --> 00:00:44,220 ამის გაკეთება, ახორციელებს რაღაც მოუწოდა 15 00:00:44,220 --> 00:00:48,330 ფაილი, სტრუქტურა, რომელიც, ძირითადად, წარმოადგენს ფაილი, რომელიც თქვენ ორმაგად 16 00:00:48,330 --> 00:00:53,826 დააჭირეთ თქვენს კომპიუტერში, თუ თქვენ გამოიყენება გრაფიკული მომხმარებლის გარემოში. 17 00:00:53,826 --> 00:00:55,700 საერთოდ, როდესაც მუშაობა გ, ჩვენ, ფაქტობრივად, 18 00:00:55,700 --> 00:00:59,965 აპირებს მუშაობის მითითებას ფაილები ფაილი stars-- 19 00:00:59,965 --> 00:01:02,090 გარდა ცოტა როდესაც ვსაუბრობთ რამდენიმე 20 00:01:02,090 --> 00:01:04,560 ფუნქციებს, მუშაობა ფაილი მითითებას. 21 00:01:04,560 --> 00:01:08,990 თქვენ არ უნდა ნამდვილად გათხრილი ძალიან ღრმად გაგება პოინტერები 22 00:01:08,990 --> 00:01:09,730 თავს. 23 00:01:09,730 --> 00:01:12,870 აქ არის პატარა teeny ცოტა სადაც ჩვენ ვსაუბრობთ, მათ შორის, 24 00:01:12,870 --> 00:01:18,090 მაგრამ ზოგადად წარადგინოს მითითებას და მითითებას, ხოლო ერთმანეთთან დაკავშირებული, 25 00:01:18,090 --> 00:01:20,290 არ არის ზუსტად იგივე. 26 00:01:20,290 --> 00:01:22,440 >> ახლა რას ვგულისხმობ, როცა მე ვიტყვი, მუდმივი მონაცემები? 27 00:01:22,440 --> 00:01:23,650 რა არის მუდმივი მონაცემები? 28 00:01:23,650 --> 00:01:25,232 რატომ აინტერესებთ ის? 29 00:01:25,232 --> 00:01:27,190 ამბობენ, რომ, მაგალითად, თქვენ გაშვებული პროგრამა 30 00:01:27,190 --> 00:01:29,850 ან თქვენ გადაწერილი პროგრამა, რომელიც არის თამაში, 31 00:01:29,850 --> 00:01:32,960 და გსურთ, რომ შევინარჩუნოთ სიმღერა ყველა მომხმარებლის გადადის 32 00:01:32,960 --> 00:01:36,620 ასე რომ, შესაძლოა, თუ რაღაც მიდის არასწორი, თქვენ შეგიძლიათ განიხილოს ფაილი შემდეგ თამაში. 33 00:01:36,620 --> 00:01:39,970 ეს არის ის, რასაც ჩვენ ვგულისხმობთ, როდესაც ჩვენ ვისაუბროთ მუდმივი მონაცემები. 34 00:01:39,970 --> 00:01:43,930 >> რა თქმა უნდა, გაშვებული პროგრამა, ფაილი არის შექმნილი. 35 00:01:43,930 --> 00:01:45,680 და როდესაც თქვენი პროგრამა შეჩერდა გაშვებული, 36 00:01:45,680 --> 00:01:48,689 რომ ფაილი არსებობს თქვენს სისტემაში. 37 00:01:48,689 --> 00:01:50,230 ჩვენ შეგვიძლია შევხედოთ მას, და შეამოწმოს იგი. 38 00:01:50,230 --> 00:01:53,670 და ისე, რომ პროგრამა იქნება მითითებული შექმნეს გარკვეული მუდმივი მონაცემებით, 39 00:01:53,670 --> 00:01:57,390 არსებობს მონაცემები შემდეგ პროგრამა დაასრულა გაშვებული. 40 00:01:57,390 --> 00:02:02,320 >> ახლა ყველა ამ ფუნქციას, რომ მუშაობა შექმნა ფაილი და მანიპულირების 41 00:02:02,320 --> 00:02:04,940 მათ სხვადასხვა გზები ცხოვრობს სტანდარტული io.h 42 00:02:04,940 --> 00:02:08,210 რომელიც არის header ფაილი, რომელიც თქვენ სავარაუდოდ იყო pound 43 00:02:08,210 --> 00:02:10,910 მათ ზედა საკმაოდ ბევრი ყველა პროგრამა 44 00:02:10,910 --> 00:02:14,130 რადგან იგი შეიცავს ერთი ყველაზე სასარგებლო ფუნქციები ჩვენთვის, 45 00:02:14,130 --> 00:02:16,130 printf, რომელიც ასევე საშუალებას ცხოვრობს სტანდარტული io.h. 46 00:02:16,130 --> 00:02:20,400 ასე, რომ თქვენ არ უნდა ფუნტი მოიცავს ნებისმიერი დამატებითი ფაილი, ალბათ, 47 00:02:20,400 --> 00:02:23,540 იმისათვის, რომ მუშაობა ფაილი მითითებას. 48 00:02:23,540 --> 00:02:29,980 >> ახლა თითოეული ფაილის კურსორი ფუნქცია, ან თითოეული ფაილის I / O, შეყვანის გამომავალი 49 00:02:29,980 --> 00:02:33,310 ფუნქცია, იღებს, როგორც ერთ-ერთი მისი პარამეტრების და საშუალებებით 50 00:02:33,310 --> 00:02:35,822 ფაილი მაჩვენებელი გარდა ერთი, fopen, რომელიც 51 00:02:35,822 --> 00:02:38,280 არის ის, რაც თქვენ გამოიყენოს, რათა ფაილი მაჩვენებელი, პირველ რიგში. 52 00:02:38,280 --> 00:02:41,010 მაგრამ მას შემდეგ, რაც თქვენ გახსნა ფაილი და თქვენ გაქვთ ფაილი მითითებას, 53 00:02:41,010 --> 00:02:43,510 შეგიძლიათ შემდეგ გადმოეცა, რადგან არგუმენტები სხვადასხვა ფუნქციები 54 00:02:43,510 --> 00:02:46,720 ჩვენ ვაპირებთ ვისაუბროთ დღეს, ისევე როგორც მრავალი სხვა 55 00:02:46,720 --> 00:02:48,520 ასე რომ თქვენ შეგიძლიათ მუშაობა ფაილი. 56 00:02:48,520 --> 00:02:50,980 >> ასე რომ, არსებობს ექვსი საკმაოდ საერთო ძირითადი პირობა 57 00:02:50,980 --> 00:02:52,870 რომ ჩვენ ვაპირებთ ვისაუბროთ დღეს. 58 00:02:52,870 --> 00:02:57,160 fopen და მისი კომპანიონი ფუნქცია fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 და მისი კომპანიონი ფუნქცია fputc, და fread და მისი კომპანიონი ფუნქცია, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 მოდით მიიღოს უფლება მივანიჭო. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- რას აკეთებთ? 63 00:03:07,050 --> 00:03:10,050 ისე, ეს ხსნის ფაილი და ეს გაძლევთ ფაილის კურსორი მას, 64 00:03:10,050 --> 00:03:14,000 ასე რომ თქვენ შეგიძლიათ შემდეგ გამოიყენოთ, რომ ფაილის მაჩვენებელი, როგორც არგუმენტი 65 00:03:14,000 --> 00:03:16,730 ნებისმიერ სხვა ფაილი I / O ფუნქციები. 66 00:03:16,730 --> 00:03:19,100 ყველაზე მნიშვნელოვანი რამ უნდა გვახსოვდეს fopen 67 00:03:19,100 --> 00:03:24,222 ის არის, რომ მას შემდეგ, რაც თქვენ არ გახსნა შეიტანოს ან ზარი, როგორც აქ, 68 00:03:24,222 --> 00:03:26,930 თქვენ უნდა შეამოწმოთ რომ დავრწმუნდეთ, რომ მომცეთ, რომ თქვენ მიიღო უკან 69 00:03:26,930 --> 00:03:28,320 არ არის ტოლი null. 70 00:03:28,320 --> 00:03:31,320 თუ თქვენ არ უყურებს ვიდეო პოინტერები, ეს შეიძლება არ აქვს აზრი. 71 00:03:31,320 --> 00:03:35,639 მაგრამ თუ თქვენ ცდილობენ და dereference null მაჩვენებელი გაწვევას, 72 00:03:35,639 --> 00:03:38,180 თქვენი პროგრამა ალბათ განიცდიან სეგმენტაცია [INAUDIBLE]. 73 00:03:38,180 --> 00:03:40,540 ჩვენ გვინდა, რომ დავრწმუნდეთ, რომ ჩვენ მიიღო ლეგიტიმური მაჩვენებელი უკან. 74 00:03:40,540 --> 00:03:43,665 უმრავლესობის დროს ჩვენ მიღებული ლეგიტიმური მაჩვენებელი უკან 75 00:03:43,665 --> 00:03:45,280 და ეს არ იქნება პრობლემა. 76 00:03:45,280 --> 00:03:46,760 >> ასე რომ, ჩვენ ზარი fopen? 77 00:03:46,760 --> 00:03:48,051 იგი გამოიყურება საკმაოდ მოსწონს ეს. 78 00:03:48,051 --> 00:03:52,690 ფაილის ვარსკვლავი ptr-- Ptr მყოფი generic სახელი ფაილი მაჩვენებელი fopen 79 00:03:52,690 --> 00:03:57,300 და ჩვენ გაივლის ორი რამ, ფაილის სახელი და ოპერაცია ჩვენ გვინდა წამოწყებას. 80 00:03:57,300 --> 00:04:01,690 ასე რომ, ჩვენ შეიძლება მოწოდება, რომელიც ასე გამოიყურება ამას ფაილი ვარსკვლავი ptr 1 უდრის fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 და ოპერაციის მე არჩეული r. 83 00:04:07,020 --> 00:04:08,639 >> ასე რომ, რას ფიქრობთ r არის აქ? 84 00:04:08,639 --> 00:04:11,180 რა სახის რამ, ჩვენ შეიძლება იყოს ვერ გააკეთებს, რათა ფაილი? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 ასე რომ, r არის ოპერაცია, რომ ჩვენ აირჩიოს, როდესაც ჩვენ გვინდა წაიკითხოთ ფაილი. 87 00:04:17,500 --> 00:04:20,260 ასე რომ ჩვენ გვინდა, ძირითადად, როდესაც ჩვენ დავრეკოთ მოსწონს ეს 88 00:04:20,260 --> 00:04:25,440 მიღების თავს ფაილის კურსორი ასეთი, რომ ჩვენ შეგვიძლია მაშინ წავიკითხე ინფორმაცია 89 00:04:25,440 --> 00:04:27,770 საწყისი file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> ანალოგიურად, ჩვენ ვერ ვხსნი 2.txt წერა და ასე რომ ჩვენ შეგვიძლია გაივლის ptr2, 91 00:04:34,190 --> 00:04:38,210 ფაილის კურსორი მე ის აქ, როგორც არგუმენტი ნებისმიერი ფუნქცია, რომ 92 00:04:38,210 --> 00:04:40,080 ინფორმაციას წერს ფაილი. 93 00:04:40,080 --> 00:04:43,767 და მსგავსი წერილობით, არსებობს ასევე ვარიანტი დამატება, ა. 94 00:04:43,767 --> 00:04:45,600 შორის სხვაობა წერა და მიერთება 95 00:04:45,600 --> 00:04:50,920 იმისა, რომ როდესაც წერთ ფაილი, თუ ზარი fopen წერა 96 00:04:50,920 --> 00:04:54,761 და რომ ფაილი უკვე არსებობს, ეს აპირებს გადავაწერო მთელი ფაილი. 97 00:04:54,761 --> 00:04:56,510 ის აპირებს დაიწყოს თავიდანვე, 98 00:04:56,510 --> 00:04:58,820 წაშლის ყველა ინფორმაცია რომ უკვე არსებობს. 99 00:04:58,820 --> 00:05:02,210 >> ხოლო თუ თქვენ გასახსნელად appending, ის წავა ბოლომდე ფაილი 100 00:05:02,210 --> 00:05:04,340 თუ არსებობს უკვე ტექსტი ის ან ინფორმაცია, ის, 101 00:05:04,340 --> 00:05:06,040 და მას შემდეგ დაიწყება წერა იქიდან. 102 00:05:06,040 --> 00:05:08,570 ასე რომ თქვენ არ დაკარგოს ნებისმიერ ინფორმაცია გავაკეთეთ ადრე. 103 00:05:08,570 --> 00:05:12,110 თუ გსურთ დაწეროთ ან დამატება ერთგვარი დამოკიდებულია სიტუაცია. 104 00:05:12,110 --> 00:05:16,840 მაგრამ თქვენ ალბათ იცით, თუ რა მარჯვენა ოპერაცია, როცა დრო მოდის. 105 00:05:16,840 --> 00:05:18,020 ასე რომ, fopen. 106 00:05:18,020 --> 00:05:18,930 >> რაც შეეხება fclose? 107 00:05:18,930 --> 00:05:21,600 ისე, საკმაოდ უბრალოდ, fclose მხოლოდ ადასტურებს ფაილის კურსორი. 108 00:05:21,600 --> 00:05:24,000 და როგორც თქვენ შეიძლება ველოდოთ, ეს იხურება ფაილი. 109 00:05:24,000 --> 00:05:29,270 და კიდევ ჩვენ უკვე დაიხურა, ფაილი, ჩვენ არ შეგვიძლია შეასრულოს ნებისმიერი მეტი ფაილის I / O ფუნქციები, 110 00:05:29,270 --> 00:05:31,420 კითხულობს და წერს, რომ ფაილი. 111 00:05:31,420 --> 00:05:36,444 ჩვენ უნდა ხელახლა გახსნა წარადგინოს სხვა დრო, რათა 112 00:05:36,444 --> 00:05:38,610 გავაგრძელოთ მუშაობა ის გამოყენებით I / O ფუნქციები. 113 00:05:38,610 --> 00:05:41,520 ასე რომ, fclose საშუალებით ჩვენ გავაკეთეთ მუშაობს ეს ფაილი. 114 00:05:41,520 --> 00:05:44,690 და ყველა ჩვენ უნდა გაიაროს არის სახელი ფაილის მაჩვენებელი. 115 00:05:44,690 --> 00:05:50,010 ასე რომ, რამდენიმე სლაიდები წინ, ჩვენ fopened ფაილი 1 dot ტექსტი მოსმენით 116 00:05:50,010 --> 00:05:52,854 და ჩვენ დაავალა, ფაილი მომცეთ ptr1. 117 00:05:52,854 --> 00:05:55,020 ამჟამად ჩვენ გადავწყვიტეთ, რომ ჩვენ კეთდება კითხულობს რომ ფაილი. 118 00:05:55,020 --> 00:05:56,561 ჩვენ არ გვჭირდება რაიმე უფრო მას. 119 00:05:56,561 --> 00:05:58,890 ჩვენ შეგვიძლია უბრალოდ fclose ptr1. 120 00:05:58,890 --> 00:06:01,950 და ანალოგიურად, შეიძლება, ჩვენ fclose სხვა პირობა. 121 00:06:01,950 --> 00:06:02,450 ყველა უფლება. 122 00:06:02,450 --> 00:06:03,700 ასე რომ გახსნის და დახურვის. 123 00:06:03,700 --> 00:06:05,780 ეს ის ორი ძირითადი საქმიანობის დაწყებას. 124 00:06:05,780 --> 00:06:08,050 >> ახლა ჩვენ გვინდა რეალურად დაკავდით საინტერესო პერსონალი, 125 00:06:08,050 --> 00:06:11,940 და პირველი ფუნქცია, რომელიც ჩვენ გამოგიგზავნით ვხედავთ, რომ ყველაფერს გააკეთებს, რომ არის fgetc-- 126 00:06:11,940 --> 00:06:14,110 წარადგინოს კიდევ ხასიათი. 127 00:06:14,110 --> 00:06:17,350 ეს არის ის რაც fgetc ზოგადად რომ თარგმნოს. 128 00:06:17,350 --> 00:06:20,190 მისი მიზანი ცხოვრებაში არის წაკითხვის შემდეგ ხასიათი, 129 00:06:20,190 --> 00:06:22,079 ან, თუ ეს თქვენი ძალიან პირველი ზარი fgetc 130 00:06:22,079 --> 00:06:23,870 კონკრეტული ფაილი, პირველი ხასიათი. 131 00:06:23,870 --> 00:06:26,210 მაგრამ შემდეგ, რომ, თქვენ მომდევნო ერთი, 132 00:06:26,210 --> 00:06:31,500 მომდევნო ხასიათი რომ ფაილი, და ინახავს მას ხასიათი განსხვავებულია. 133 00:06:31,500 --> 00:06:34,490 როგორც ჩვენ გავაკეთეთ აქ, char ch ტოლია fgetc, 134 00:06:34,490 --> 00:06:36,389 გაივლის სახელი ფაილის მაჩვენებელი. 135 00:06:36,389 --> 00:06:38,180 ისევ და ისევ, ეს არის ძალიან აქ მნიშვნელოვანია გვახსოვდეს, 136 00:06:38,180 --> 00:06:41,430 რომ იმისათვის, რომ ამ ოპერაციის წარმატების მიღწევა, 137 00:06:41,430 --> 00:06:45,690 ფაილის კურსორი თავად must've გაიხსნა მოსმენით. 138 00:06:45,690 --> 00:06:50,589 ჩვენ ვერ წაიკითხა ხასიათი ფაილი მაჩვენებელი, რომ გავხსენით წერა. 139 00:06:50,589 --> 00:06:52,630 ასე რომ, ერთ-ერთი შეზღუდვები fopen, არა? 140 00:06:52,630 --> 00:06:55,470 ჩვენ უნდა შეზღუდოს საკუთარ თავს მხოლოდ ასრულებენ 141 00:06:55,470 --> 00:06:57,710 ერთი ოპერაციის ერთი ფაილი მაჩვენებელი. 142 00:06:57,710 --> 00:07:00,220 თუ გვინდოდა, რომ წავიკითხე და წერენ იგივე ფაილი, 143 00:07:00,220 --> 00:07:03,840 გვექნებოდა გახსნა ორი ცალკე ფაილი მითითებას იგივე ფაილი 144 00:07:03,840 --> 00:07:05,670 ერთი მოსმენით, ერთ წერა. 145 00:07:05,670 --> 00:07:08,400 >> ასე რომ კიდევ ერთხელ, ერთადერთი მიზეზი მე მოუტანს, რომ ახლა არის 146 00:07:08,400 --> 00:07:11,920 იმიტომ, რომ თუ ჩვენ ვაპირებთ, რომ მიიღოს ზარი რომ fgetc, რომ ფაილი მაჩვენებელი must've 147 00:07:11,920 --> 00:07:14,172 გაიხსნა მოსმენით. 148 00:07:14,172 --> 00:07:15,880 და მაშინ საკმაოდ უბრალოდ, ყველა ჩვენ უნდა გავაკეთოთ 149 00:07:15,880 --> 00:07:17,546 გაივლის სახელით ფაილი მაჩვენებელი. 150 00:07:17,546 --> 00:07:21,060 ასე რომ char ch ტოლია fgetc ptr1. 151 00:07:21,060 --> 00:07:23,200 >> რომ აპირებს მიიღოს ჩვენთვის შემდეგი პერსონაჟი 152 00:07:23,200 --> 00:07:25,575 ან კიდევ ერთხელ, თუ ეს არის პირველი დროს ჩვენ ეს ზარი, 153 00:07:25,575 --> 00:07:29,750 პირველი პერსონაჟი, რაც ფაილი მიუთითა მიერ ptr1. 154 00:07:29,750 --> 00:07:32,210 შეგახსენებთ, რომ ეს იყო ფაილი 1 dot ტექსტი. 155 00:07:32,210 --> 00:07:36,490 ეს მიიღებთ პირველი ხასიათი რომ და ჩვენ ვინახავთ ეს ცვლადი ch. 156 00:07:36,490 --> 00:07:37,941 საკმაოდ მარტივია. 157 00:07:37,941 --> 00:07:40,190 ასე რომ, ჩვენ მხოლოდ შევხედე სამი ფუნქციები და უკვე ჩვენ 158 00:07:40,190 --> 00:07:43,070 შეგვიძლია გავაკეთოთ რაღაც საკმაოდ სუფთა. 159 00:07:43,070 --> 00:07:46,320 >> ასე რომ, თუ ჩვენ ეს უნარი მიღების ხასიათი 160 00:07:46,320 --> 00:07:48,943 და ჩვენ loop it-- ამიტომ ჩვენ გააგრძელოს გმირები 161 00:07:48,943 --> 00:07:51,390 საწყისი ფაილი მეტი და მეტი და over-- ახლა ჩვენ 162 00:07:51,390 --> 00:07:54,500 შეგიძლიათ წაიკითხოთ თითოეული ხასიათი ფაილი. 163 00:07:54,500 --> 00:07:58,670 და თუ ჩვენ ბეჭდვა თითოეული ხასიათი მაშინვე ვკითხულობდით, 164 00:07:58,670 --> 00:08:01,960 ჩვენ ახლა წაკითხვის ფაილი და დაბეჭდილი მისი შინაარსი ეკრანზე. 165 00:08:01,960 --> 00:08:05,610 ჩვენ ეფექტურად concatenated რომ ფაილი ეკრანზე. 166 00:08:05,610 --> 00:08:09,670 და რომ ის, რაც Linux ბრძანება კატა აკეთებს. 167 00:08:09,670 --> 00:08:13,250 >> თუ თქვენ აკრიფოთ კატა ფაილის სახელი, მას ამობეჭდოთ მთელი შინაარსი 168 00:08:13,250 --> 00:08:15,160 ფაილი თქვენს ტერმინალის ფანჯარაში. 169 00:08:15,160 --> 00:08:19,010 ასე რომ, ამ პატარა loop აქ, მხოლოდ სამი ხაზი კოდი, 170 00:08:19,010 --> 00:08:23,270 მაგრამ ეს ეფექტურად ეგზ ლინუქსის ბრძანება კატა. 171 00:08:23,270 --> 00:08:25,210 ასე რომ, ეს სინტაქსი შეიძლება ცოტა უცნაური, 172 00:08:25,210 --> 00:08:26,670 მაგრამ აქ არის ის, რაც ხდება აქ. 173 00:08:26,670 --> 00:08:31,460 მიუხედავად იმისა, რომ ch ტოლია fgetc, ptr არ არის ტოლი EOF-- ეს არის მთელი mouthful, 174 00:08:31,460 --> 00:08:34,669 მაგრამ მოდით შესვენება მას მხოლოდ ასე რომ, ეს ნათელია სინტაქსი. 175 00:08:34,669 --> 00:08:37,169 მე კონსოლიდაცია ეს გულისთვის სივრცეში, 176 00:08:37,169 --> 00:08:39,049 მიუხედავად იმისა, რომ ეს არის პატარა სინტაქსურად სახიფათო. 177 00:08:39,049 --> 00:08:41,194 >> ასე რომ ეს ნაწილი მწვანე უფლება ახლა, რა არის ეს აკეთებს? 178 00:08:41,194 --> 00:08:42,860 ისე, რომ მხოლოდ ჩვენი fgetc დარეკეთ, არა? 179 00:08:42,860 --> 00:08:44,530 ჩვენ ვნახეთ, რომ ადრე. 180 00:08:44,530 --> 00:08:49,500 ეს მოპოვების ერთი ხასიათი ფაილი. 181 00:08:49,500 --> 00:08:53,220 შემდეგ შევადარებთ, ხასიათი წინააღმდეგ EOF. 182 00:08:53,220 --> 00:08:57,470 EOF არის სპეციალური ღირებულება, რომელიც არის განსაზღვრულია სტანდარტული io.h, რომელიც 183 00:08:57,470 --> 00:08:59,390 არის ფაილის დასასრულს ხასიათი. 184 00:08:59,390 --> 00:09:03,450 ასე რომ, ძირითადად, რა მოხდება არის ამ მარყუჟის წაიკითხავს ხასიათი, 185 00:09:03,450 --> 00:09:07,445 შედარების eof, რომ ფაილის დასასრულს ხასიათი. 186 00:09:07,445 --> 00:09:10,070 თუ ისინი არ ემთხვევა, ამიტომ ჩვენ არ გვაქვს მიაღწია ბოლომდე ფაილი, 187 00:09:10,070 --> 00:09:11,490 ჩვენ ბეჭდვა რომ ხასიათი გარეთ. 188 00:09:11,490 --> 00:09:13,740 მაშინ ჩვენ დაბრუნდეს დაწყებული მარყუჟის ერთხელ. 189 00:09:13,740 --> 00:09:18,310 ჩვენ კიდევ ხასიათი, შეამოწმეთ წინააღმდეგ EOF, ამობეჭდოთ, და ა.შ. 190 00:09:18,310 --> 00:09:21,094 და ასე შემდეგ და ასე შემდეგ, looping მეშვეობით, რომ გზა 191 00:09:21,094 --> 00:09:22,760 სანამ ჩვენ მიაღწია ბოლომდე ფაილი. 192 00:09:22,760 --> 00:09:24,593 და მაშინ, რომ წერტილი, ჩვენ არ დაბეჭდილი 193 00:09:24,593 --> 00:09:26,210 მთელი შინაარსი ფაილი. 194 00:09:26,210 --> 00:09:29,450 ასე რომ კიდევ ერთხელ, ჩვენ მხოლოდ ჩანს fopen, fclose, და fgetc 195 00:09:29,450 --> 00:09:34,950 და უკვე შეგვიძლია დუბლიკატი ლინუქსის ტერმინალის ბრძანება. 196 00:09:34,950 --> 00:09:38,850 >> როგორც ვთქვი დასაწყისში, ჩვენ გვქონდა fgetc და fputc, 197 00:09:38,850 --> 00:09:41,860 და fputc იყო თანამგზავრი ფუნქცია fgetc. 198 00:09:41,860 --> 00:09:44,880 ასე რომ, როგორც თქვენ ალბათ წარმოიდგინეთ, ეს არის წერა ექვივალენტს. 199 00:09:44,880 --> 00:09:49,440 ეს საშუალებას გვაძლევს დაწერა ერთჯერადი ხასიათი ფაილი. 200 00:09:49,440 --> 00:09:53,290 >> ისევ და ისევ, გაფრთხილებაც, რომ, უბრალოდ, როგორც ეს იყო fgetc, ფაილი 201 00:09:53,290 --> 00:09:56,660 რომ ჩვენ წერილობით must've ყოფილა გაიხსნა წერილობით ან მიერთება. 202 00:09:56,660 --> 00:10:00,820 თუ ჩვენ ვცდილობთ და გამოვიყენოთ fputc ფაილი რომ ჩვენ გახსნა მოსმენით, 203 00:10:00,820 --> 00:10:02,760 ჩვენ ვაპირებთ, რომ განიცდიან ცოტა შეცდომა. 204 00:10:02,760 --> 00:10:04,440 მაგრამ ზარი საკმაოდ მარტივია. 205 00:10:04,440 --> 00:10:08,000 fputc კაპიტალი ptr2, ყველა რომ აპირებს გააკეთოს არის ის, 206 00:10:08,000 --> 00:10:12,040 აპირებს დაწეროს წერილი შევიდა ფაილი 2 dot 207 00:10:12,040 --> 00:10:14,760 ტექსტი, რომელიც იყო სახელი ფაილი, რომელიც ჩვენ გავხსენით და ენიჭება 208 00:10:14,760 --> 00:10:17,280 მომცეთ ptr2. 209 00:10:17,280 --> 00:10:20,430 ამიტომ, ჩვენ ვაპირებთ დაწერა კაპიტალის შეიტანოს 2 dot ტექსტი. 210 00:10:20,430 --> 00:10:24,592 და ჩვენ წერენ ძახილის აღვნიშნო, რომ შეიტანოს 3 dot 211 00:10:24,592 --> 00:10:27,330 ტექსტი, რომელიც მითითებულია ptr3. 212 00:10:27,330 --> 00:10:29,730 ასე რომ კიდევ ერთხელ, საკმაოდ მარტივია. 213 00:10:29,730 --> 00:10:32,727 >> მაგრამ ახლა ჩვენ შეგვიძლია გავაკეთოთ კიდევ ერთი რამ. 214 00:10:32,727 --> 00:10:34,560 ჩვენ გვაქვს მაგალითი ჩვენ უბრალოდ აპირებს 215 00:10:34,560 --> 00:10:38,950 მიმდინარეობს შეუძლია იმეორებს კატა Linux ბრძანება, ერთი, რომ ბეჭდავს 216 00:10:38,950 --> 00:10:40,500 ეკრანზე. 217 00:10:40,500 --> 00:10:43,510 ისე, ახლა რომ ჩვენ გვაქვს შესაძლებლობა, წაკითხვის გმირების ფაილი 218 00:10:43,510 --> 00:10:46,590 და წერენ გმირები ფაილი, რატომ არ ჩვენ უბრალოდ შეიცვალა, რომ 219 00:10:46,590 --> 00:10:50,720 ზარი printf ზარი fputc. 220 00:10:50,720 --> 00:10:54,090 >> და ახლა ჩვენ დუბლირებული cp, ძალიან ძირითადი Linux ბრძანება 221 00:10:54,090 --> 00:10:59,100 რომ ჩვენ ვისაუბრეთ გზა ხანგრძლივი წინ Linux ბრძანებები ვიდეო. 222 00:10:59,100 --> 00:11:01,070 ჩვენ ეფექტურად დუბლირებული რომ უფლება აქ. 223 00:11:01,070 --> 00:11:04,790 ჩვენ კითხულობს ხასიათი და მაშინ ჩვენ წერდა, რომ ხასიათი სხვა ფაილი. 224 00:11:04,790 --> 00:11:07,660 კითხვა ერთი ფაილი, წერა სხვა, მეტი და მეტი 225 00:11:07,660 --> 00:11:11,350 და კიდევ, სანამ ჩვენ მოხვდა EOF. 226 00:11:11,350 --> 00:11:14,250 ჩვენ მივიღეთ ბოლოს წარადგინოს ჩვენ ვცდილობთ კოპირება. 227 00:11:14,250 --> 00:11:18,500 ხოლო ის, რომ ჩვენ არ წერია ყველა გმირები ჩვენ უნდა ფაილი 228 00:11:18,500 --> 00:11:19,500 რომ ჩვენ წერილობით. 229 00:11:19,500 --> 00:11:24,270 ასე რომ, ეს არის cp, Linux კოპირება. 230 00:11:24,270 --> 00:11:26,550 >> ამავე თავიდანვე ეს ვიდეო, მე მქონდა გაფრთხილებაც 231 00:11:26,550 --> 00:11:29,840 , რომ ჩვენ გაიგო ცოტა შესახებ მითითებას. 232 00:11:29,840 --> 00:11:32,480 აქ არის კონკრეტულად, სადაც ჩვენ ვართ ვაპირებთ ვისაუბროთ პოინტერები 233 00:11:32,480 --> 00:11:34,800 გარდა ამისა, უნდა წარადგინოს მითითებას. 234 00:11:34,800 --> 00:11:37,870 ასე რომ, ეს ფუნქცია გამოიყურება სახის საშინელი. 235 00:11:37,870 --> 00:11:39,120 ეს მივიღე რამდენიმე პარამეტრებს. 236 00:11:39,120 --> 00:11:40,430 არსებობს ბევრი ხდება აქ. 237 00:11:40,430 --> 00:11:42,760 არსებობს ბევრი სხვადასხვა ფერები და ტექსტები. 238 00:11:42,760 --> 00:11:47,100 მაგრამ რეალურად, ეს მხოლოდ generic ვერსია fgetc 239 00:11:47,100 --> 00:11:50,110 რომელიც საშუალებას გვაძლევს მიიღოს ნებისმიერი რაოდენობით ინფორმაციას. 240 00:11:50,110 --> 00:11:53,560 ეს შეიძლება იყოს ცოტა არაეფექტური თუ ჩვენ მიღების გმირები ერთ დროს, 241 00:11:53,560 --> 00:11:55,770 iterating მეშვეობით ფაილი ერთი ხასიათი დროს. 242 00:11:55,770 --> 00:12:00,230 თუ არ იქნება ლამაზი მისაღებად 100 დროს ან 500 დროს? 243 00:12:00,230 --> 00:12:03,250 >> ისე, fread და მისი კომპანიონი ფუნქცია fwrite, რომელიც ჩვენ ვსაუბრობთ 244 00:12:03,250 --> 00:12:05,490 მეორე, საშუალებას გვაძლევს, რომ მხოლოდ. 245 00:12:05,490 --> 00:12:08,480 ჩვენ შეგვიძლია თვითნებური თანხა ინფორმაციის ფაილი 246 00:12:08,480 --> 00:12:10,290 და ჩვენ ჩაწეროთ იგი სადმე დროებით. 247 00:12:10,290 --> 00:12:12,980 იმის ნაცვლად, რომელსაც შეუძლია მხოლოდ ჯდება ეს ერთი ცვლადი, 248 00:12:12,980 --> 00:12:15,790 ჩვენ შეიძლება უნდა ჩაწეროთ იგი მასივი. 249 00:12:15,790 --> 00:12:19,980 ასე რომ, ჩვენ გაივლის ოთხ არგუმენტები, fread-- მაჩვენებელი 250 00:12:19,980 --> 00:12:23,940 იმ ადგილას, სადაც ჩვენ მიმდინარეობს ინფორმაციის შესანახად, 251 00:12:23,940 --> 00:12:29,180 რამდენად დიდი თითოეული ერთეულის ინფორმაცია იქნება, რამდენი ერთეული ინფორმაცია 252 00:12:29,180 --> 00:12:35,192 ჩვენ გვინდა, რომ შეიძინოს, და რომელიც ფაილი ჩვენ გვინდა მათ. 253 00:12:35,192 --> 00:12:37,150 ალბათ საუკეთესო ილუსტრირებული მაგალითია აქ. 254 00:12:37,150 --> 00:12:41,640 მოდით ვთქვათ, რომ ვაცხადებთ მასივი 10 რიცხვებით. 255 00:12:41,640 --> 00:12:45,080 ჩვენ უბრალოდ განაცხადა, დასტის თვითნებურად int arr 10. 256 00:12:45,080 --> 00:12:46,970 ასე რომ, საკმაოდ მარტივია. 257 00:12:46,970 --> 00:12:51,970 ახლა, რასაც ჩვენ ვაკეთებთ, თუმცა არის frecall არის ჩვენ კითხულობს ზომა int 258 00:12:51,970 --> 00:12:54,180 ჯერ 10 ბაიტი ინფორმაცია. 259 00:12:54,180 --> 00:12:59,040 ზომა int ყოფნა four--, რომ ზომა რიცხვი გ. 260 00:12:59,040 --> 00:13:02,790 >> ასე რომ, რასაც ჩვენ ვაკეთებთ ჩვენ კითხულობს 40 bytes ღირებულების ინფორმაცია 261 00:13:02,790 --> 00:13:05,850 ფაილი მიუთითა მიერ ptr. 262 00:13:05,850 --> 00:13:08,600 და ჩვენ შენახვა იმ 40 bytes სადღაც 263 00:13:08,600 --> 00:13:12,080 სადაც ჩვენ გათვალისწინებულია 40 bytes ღირებულების მეხსიერება. 264 00:13:12,080 --> 00:13:15,970 საბედნიეროდ, ჩვენ უკვე გავაკეთეთ, რომ გამოცხადების arr, რომ მასივი უფლება არსებობს. 265 00:13:15,970 --> 00:13:19,770 რომ შეუძლია ჰოლდინგი 10 ოთხი ბაიტი ერთეული. 266 00:13:19,770 --> 00:13:22,860 ასე რომ საერთო ჯამში, მას შეუძლია გამართავს 40 bytes ღირებულების ინფორმაცია. 267 00:13:22,860 --> 00:13:26,540 ჩვენ ახლა კითხულობს 40 ბაიტი ინფორმაციის ფაილი, 268 00:13:26,540 --> 00:13:30,330 და ჩვენ შენახვის იგი arr. 269 00:13:30,330 --> 00:13:35,470 >> შეგახსენებთ, ვიდეო მითითებას, რომ სახელი მასივი, როგორიცაა arr, 270 00:13:35,470 --> 00:13:38,370 მართლაც მხოლოდ მომცეთ მისი პირველი ელემენტს. 271 00:13:38,370 --> 00:13:43,680 ასე რომ, როდესაც ჩვენ გავლა arr, ჩვენ რომლებიც, ფაქტობრივად, გადადის მომცეთ. 272 00:13:43,680 --> 00:13:46,120 >> ანალოგიურად, ჩვენ შეგვიძლია გავაკეთოთ ამას ჩვენ არ ემთხვეოდეს 273 00:13:46,120 --> 00:13:51,200 უნდა გადავარჩინოთ ჩვენი ბუფერული Stack. 274 00:13:51,200 --> 00:13:54,990 ჩვენ ასევე შეგვიძლია დინამიურად გამოყოფს ბუფერული, როგორც ეს, გამოყენებით malloc. 275 00:13:54,990 --> 00:13:57,340 გახსოვდეთ, რომ როდესაც ჩვენ დინამიურად გამოყოფს მეხსიერება, 276 00:13:57,340 --> 00:14:00,550 ჩვენ გადარჩენის ეს ბევრი, არ Stack. 277 00:14:00,550 --> 00:14:02,110 მაგრამ ეს ჯერ კიდევ ბუფერული. 278 00:14:02,110 --> 00:14:06,810 >> ეს ჯერ კიდევ, ამ შემთხვევაში, არის ჩატარების 640 ბაიტი ინფორმაცია 279 00:14:06,810 --> 00:14:09,230 რადგან ორმაგი იღებს რვა ბაიტს. 280 00:14:09,230 --> 00:14:11,570 და ჩვენ ითხოვს 80 მათგანი. 281 00:14:11,570 --> 00:14:13,770 ჩვენ გვინდა, რომ სივრცე გამართავს 80 ორადგილიანი. 282 00:14:13,770 --> 00:14:17,210 ასე რომ, 80-ჯერ 8 640 ბაიტი ინფორმაცია. 283 00:14:17,210 --> 00:14:21,880 და რომ მოწოდება fread არის შეგროვება 640 ბაიტი ინფორმაცია 284 00:14:21,880 --> 00:14:27,770 ფაილი მიუთითა მიერ ptr და შენახვის იგი ახლა arr2. 285 00:14:27,770 --> 00:14:32,770 >> ახლა ჩვენ შეგვიძლია ასევე მკურნალობა fread ისევე, როგორც ზარი fgetc. 286 00:14:32,770 --> 00:14:37,140 ამ შემთხვევაში, ჩვენ უბრალოდ ვცდილობთ, კიდევ ერთი პერსონაჟი ფაილი. 287 00:14:37,140 --> 00:14:40,070 და ჩვენ არ გვჭირდება მასივი გამართავს ხასიათი. 288 00:14:40,070 --> 00:14:43,170 ჩვენ შეგვიძლია მხოლოდ ჩაწეროთ იგი ხასიათი განსხვავებულია. 289 00:14:43,170 --> 00:14:46,390 >> დაჭერა, თუმცა, ის არის, რომ როდესაც ჩვენ უბრალოდ უნდა ცვლადი, 290 00:14:46,390 --> 00:14:50,290 ჩვენ უნდა გაიარონ მისამართი რომ ცვლადი 291 00:14:50,290 --> 00:14:52,550 იმიტომ, რომ გავიხსენოთ, რომ პირველი არგუმენტი fread 292 00:14:52,550 --> 00:14:59,210 მომცეთ განთავსების და მეხსიერება სადაც ჩვენ გვინდა შესანახად ინფორმაციას. 293 00:14:59,210 --> 00:15:01,550 ისევ და ისევ, სახელით array არის მაჩვენებელი. 294 00:15:01,550 --> 00:15:04,200 ამიტომ, ჩვენ არ უნდა გავაკეთოთ ampersand მასივი. 295 00:15:04,200 --> 00:15:07,270 მაგრამ გ, ხასიათი გ აქ, არ არის მასივი. 296 00:15:07,270 --> 00:15:08,390 ეს მხოლოდ ცვლადი. 297 00:15:08,390 --> 00:15:11,840 ასე რომ, ჩვენ უნდა გაიაროს ampersand გ მიუთითოს 298 00:15:11,840 --> 00:15:15,350 რომ ეს არის ის მისამართი, სადაც ჩვენ გვინდა შესანახად ამ ერთი ბაიტი ინფორმაცია, 299 00:15:15,350 --> 00:15:20,479 ამ ერთი ხასიათი, რომ ჩვენ შეგროვება ptr. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- მე გავლა ამ ცოტა მეტი 301 00:15:22,270 --> 00:15:25,440 quickly-- არის საკმაოდ ბევრი ზუსტი ეკვივალენტი fread 302 00:15:25,440 --> 00:15:27,720 გარდა ის წერა ნაცვლად მოსმენით, უბრალოდ 303 00:15:27,720 --> 00:15:31,610 როგორც other-- ჩვენ გვქონდა ღია და ახლოს, მიიღოთ ხასიათი, 304 00:15:31,610 --> 00:15:32,530 წერენ ხასიათი. 305 00:15:32,530 --> 00:15:35,040 ახლა ის მისაღებად თვითნებური თანხის ინფორმაციით, 306 00:15:35,040 --> 00:15:37,170 მარჯვენა თვითნებური რაოდენობით ინფორმაციას. 307 00:15:37,170 --> 00:15:39,790 ასე რომ, ისევე, როგორც ადრე, ჩვენ შეგვიძლია აქვს მასივი 10 რიცხვებით 308 00:15:39,790 --> 00:15:43,210 სადაც ჩვენ უკვე გვაქვს ინფორმაცია ინახება, ალბათ. 309 00:15:43,210 --> 00:15:46,580 >> ეს, ალბათ, რამდენიმე ხაზი კოდი რომ უნდა წავიდეს ამ ორ 310 00:15:46,580 --> 00:15:49,990 სადაც მე შეავსოთ სია თურქეთიდან ერთად რაღაც მნიშვნელოვანი. 311 00:15:49,990 --> 00:15:51,880 მე შეავსოთ იგი 10 სხვადასხვა რიცხვებით. 312 00:15:51,880 --> 00:15:54,920 და ნაცვლად, რაც მე აკეთებს წერა arr 313 00:15:54,920 --> 00:15:58,600 და შეგროვება ინფორმაცია arr. 314 00:15:58,600 --> 00:16:02,390 და მე მივიღე ეს ინფორმაცია და აყენებს მას ფაილი. 315 00:16:02,390 --> 00:16:05,410 >> ასე რომ, ნაცვლად იმისა, რომ იგი საწყისი ფაილი ბუფერულ, 316 00:16:05,410 --> 00:16:08,790 ჩვენ ახლა აპირებს ბუფერული ფაილი. 317 00:16:08,790 --> 00:16:10,580 ასე რომ, ეს უბრალოდ საპირისპირო. 318 00:16:10,580 --> 00:16:16,680 ასე რომ კიდევ ერთხელ, ისევე, როგორც ადრე, ჩვენ შეგვიძლია ასევე აქვს ბევრი ბლოკი მეხსიერება 319 00:16:16,680 --> 00:16:19,600 რომ ჩვენ გვაქვს დინამიურად გამოყოფილი და წაიკითხა, რომ 320 00:16:19,600 --> 00:16:21,570 და წერს, რომ ფაილი. 321 00:16:21,570 --> 00:16:24,900 >> და გვაქვს ერთი ცვლადი ჩატარება შეუძლია ერთი ბაიტი 322 00:16:24,900 --> 00:16:27,200 ინფორმაციის, როგორიცაა ხასიათი. 323 00:16:27,200 --> 00:16:29,830 მაგრამ კიდევ ერთხელ, ჩვენ უნდა გაიაროს მისამართი, რომელიც ცვლადი 324 00:16:29,830 --> 00:16:31,840 როდესაც ჩვენ გვინდა, რომ წაკითხვის იგი. 325 00:16:31,840 --> 00:16:35,280 ასე რომ, ჩვენ შეგვიძლია დავწეროთ ინფორმაცია ჩვენ ვხედავთ, რომ მისამართი 326 00:16:35,280 --> 00:16:39,050 ფაილის მაჩვენებელი, Ptr. 327 00:16:39,050 --> 00:16:41,630 >> არსებობს უამრავი სხვა დიდი ფაილი I / O ფუნქციები 328 00:16:41,630 --> 00:16:44,650 რომ სხვადასხვა ნივთები, გარდა პირობა ჩვენ ვისაუბრეთ დღეს. 329 00:16:44,650 --> 00:16:46,450 რამდენიმე პირობა თქვენ შეიძლება სასარგებლო 330 00:16:46,450 --> 00:16:50,840 არიან fgets და fputs, რომლებიც ეკვივალენტს 331 00:16:50,840 --> 00:16:56,190 საქართველოს fgetc და fputc მაგრამ კითხულობს ერთ სიმებიანი ფაილიდან. 332 00:16:56,190 --> 00:16:59,020 იმის ნაცვლად, ერთი ხასიათი, იგი წაიკითხავს მთელი სიმებიანი. 333 00:16:59,020 --> 00:17:02,940 fprintf, რომლებიც ძირითადად საშუალებას იძლევა თქვენ უნდა გამოვიყენოთ printf დაწერა შეიტანოს. 334 00:17:02,940 --> 00:17:05,619 ასე რომ, ისევე შეგიძლიათ გააკეთოთ ცვლადი ჩანაცვლების გამოყენებით 335 00:17:05,619 --> 00:17:09,900 placeholders პროცენტი მე და პროცენტს d, და ა.შ., printf 336 00:17:09,900 --> 00:17:14,690 თქვენ შეგიძლიათ ერთნაირად მიიღოს printf სიმებიანი და ბეჭდვითი რაღაც 337 00:17:14,690 --> 00:17:16,800 მინდა, რომ ფაილი. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- თუ თქვენ გაქვთ DVD player არის ანალოგია მე ჩვეულებრივ გამოიყენოთ აქ 339 00:17:20,720 --> 00:17:23,109 არის ერთგვარი მოსწონს გამოყენებით თქვენი გადახვევა და სწრაფი წინ 340 00:17:23,109 --> 00:17:25,819 ღილაკები გადაადგილება ფილმი. 341 00:17:25,819 --> 00:17:28,369 ასევე, შეგიძლიათ გადაადგილება ფაილი. 342 00:17:28,369 --> 00:17:30,250 ერთი რამ შიგნით რომ ფაილის სტრუქტურა 343 00:17:30,250 --> 00:17:34,270 რომ გ ქმნის თქვენთვის არის მაჩვენებელი სადაც ხართ ფაილი. 344 00:17:34,270 --> 00:17:36,420 ხართ თუ არა ძალიან დაწყებული, ერთი ბაიტი ნულოვანი? 345 00:17:36,420 --> 00:17:39,290 ხართ თუ არა byte 100, byte 1000, და ა.შ.? 346 00:17:39,290 --> 00:17:44,340 თქვენ შეგიძლიათ გამოიყენოთ fseek თვითნებურად გადაადგილება რომ მაჩვენებელი წინ ან უკან. 347 00:17:44,340 --> 00:17:46,744 >> და ftell, კიდევ ერთხელ მსგავსი DVD player, 348 00:17:46,744 --> 00:17:49,660 ჰგავს პატარა საათის რომ გიჩვენებთ რამდენი წუთი და წამი თქვენ 349 00:17:49,660 --> 00:17:52,480 შევიდა კონკრეტულ ფილმი. 350 00:17:52,480 --> 00:17:56,990 ანალოგიურად, ftell მოგვითხრობს, თუ როგორ რამდენი ბაიტი თქვენ შევიდა ფაილი. 351 00:17:56,990 --> 00:18:00,210 feof არის განსხვავებული ვერსია გამოვლენის თუ არა თქვენ 352 00:18:00,210 --> 00:18:01,700 მიაღწია ბოლომდე ფაილი. 353 00:18:01,700 --> 00:18:03,600 და ferror ფუნქცია რომელიც შეგიძლიათ გამოიყენოთ 354 00:18:03,600 --> 00:18:06,959 შესამჩნევია თუ არა რაღაც წავიდა არასწორი სამუშაო ფაილი. 355 00:18:06,959 --> 00:18:08,750 ისევ და ისევ, ეს მხოლოდ scratching ზედაპირზე. 356 00:18:08,750 --> 00:18:12,730 არსებობს კიდევ უამრავი სხვა ფაილი I / O ფუნქციების სტანდარტული io.h. 357 00:18:12,730 --> 00:18:16,620 მაგრამ ეს, სავარაუდოდ, კიდევ თქვენ დაიწყო მუშაობა ფაილი მითითებას. 358 00:18:16,620 --> 00:18:17,640 მე Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 ეს არის CS50. 360 00:18:19,750 --> 00:18:21,669