1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SPEAKER: เพื่อให้ห่างไกลเป็นไปได้ ว่าส่วนใหญ่ของโปรแกรมของคุณ 3 00:00:07,870 --> 00:00:10,170 ได้รับบิตชั่วคราว 4 00:00:10,170 --> 00:00:13,310 คุณเรียกใช้โปรแกรมเช่นมาริโอหรือโลภ 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 ผมหมายถึงแน่ใจว่าคุณอาจไม่เคยมีใคร มันเปิดหน้าต่าง terminal, 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-- files-- 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 มีบิตเล็กเล็กน้อย ที่เราจะพูดคุยเกี่ยวกับพวกเขา 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 ซึ่งเป็นไฟล์ส่วนหัวที่ คุณได้รับปอนด์แนวโน้ม 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 pointer-- ไฟล์ยกเว้น สำหรับหนึ่ง 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 ไม่เท่ากับเป็นโมฆะ 70 00:03:28,320 --> 00:03:31,320 หากคุณยังไม่ได้ดูวิดีโอบน คำแนะนำนี้ไม่อาจทำให้รู้สึก 71 00:03:31,320 --> 00:03:35,639 แต่ถ้าคุณพยายามและ dereference การเรียกคืนตัวชี้โมฆะ 72 00:03:35,639 --> 00:03:38,180 โปรแกรมของคุณอาจจะต้องทนทุกข์ทรมาน การแบ่งส่วน [ไม่ได้ยิน] 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 เป็นทั่วไป ชื่อไฟล์ pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 และเราผ่านในสองสิ่งที่ชื่อไฟล์ และการดำเนินการที่เราต้องการที่จะดำเนินการ 80 00:03:57,300 --> 00:04:01,690 ดังนั้นเราอาจจะมีการเรียกร้องที่มีลักษณะเช่น ดาวไฟล์ this-- PTR 1 เท่ากับ fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt 82 00:04:04,040 --> 00:04:07,020 และการดำเนินงานที่ผมได้เลือกเป็นอา 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 >> ในขณะที่ถ้าคุณเปิดสำหรับการผนวก, มันจะไปถึงจุดสิ้นสุดของไฟล์ 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 จุดสำหรับการอ่าน 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 ในขณะที่เราได้ทำที่นี่ 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 ตัวชี้ไฟล์ตัวเองคงจะ รับการเปิดสำหรับการอ่าน 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 เราจะต้องเปิดสองแยก ตัวชี้ไปยังไฟล์ file-- เดียวกัน 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 ว่าคงจะชี้แฟ้ม 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 ดังนั้น CH ถ่านเท่ากับ fgetc ptr1 151 00:07:21,060 --> 00:07:23,200 >> ที่จะได้รับเรา character-- ต่อไป 152 00:07:23,200 --> 00:07:25,575 หรืออีกครั้งถ้านี้เป็นครั้งแรก เวลาที่เราได้ทำสายนี้ 153 00:07:25,575 --> 00:07:29,750 character-- แรกของสิ่งที่ แฟ้มดังกล่าวจะชี้ไปตาม ptr1 154 00:07:29,750 --> 00:07:32,210 จำได้ว่านั่นคือแฟ้มข้อความ 1 จุด 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 และเราห่วงดังนั้นเรา 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 เราได้ตัดแบ่งได้อย่างมีประสิทธิภาพ แฟ้มที่อยู่บนหน้าจอ 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 และเพื่อให้วงเล็ก ๆ น้อย ๆ ที่นี่ เพียงสามบรรทัดของรหัส 170 00:08:19,010 --> 00:08:23,270 แต่มันได้อย่างมีประสิทธิภาพที่ซ้ำกัน แมวคำสั่ง Linux 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 ในขณะที่ชเท่ากับ fgetc, PTR ไม่ เท่ากับ EOF-- มันเป็นคำหนึ่งทั้ง 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 แม้ว่ามันจะเป็นเรื่องเล็ก ๆ น้อย ๆ syntactically หากิน 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 และอื่น ๆ และอื่น ๆ วนลูปผ่านไปในทางที่ 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 ที่เรากำลังเขียนเพื่อรับคงจะ เปิดสำหรับการเขียนหรือการผนวก 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 จุด 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 จุด 210 00:10:20,430 --> 00:10:24,592 และเราจะเขียนอัศเจรีย์ ชี้ไปยื่น 3 จุด 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 >> และตอนนี้เราได้ทำซ้ำซีพี คำสั่งลินุกซ์ขั้นพื้นฐานมาก 221 00:10:54,090 --> 00:10:59,100 ที่เราพูดคุยเกี่ยวกับทางยาว ที่ผ่านมาในลินุกซ์คำสั่งวิดีโอ 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 ดังนั้นนี่คือซีพี, ลินุกซ์คัดลอกคำสั่ง 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 แต่จริงๆมันเป็นเพียง รุ่นทั่วไปของ 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 ไบต์มูลค่าของข้อมูล 261 00:13:02,790 --> 00:13:05,850 จากไฟล์ที่ชี้ไปตาม PTR 262 00:13:05,850 --> 00:13:08,600 และเรากำลังจัดเก็บเหล่านั้น 40 ไบต์ที่ไหนสักแห่ง 263 00:13:08,600 --> 00:13:12,080 ที่เราได้ตั้งสำรอง 40 ไบต์มูลค่าของหน่วยความจำ 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 ไบต์มูลค่าของข้อมูล 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 >> ในทำนองเดียวกันเราสามารถทำ this-- เราไม่จำเป็นต้อง 273 00:13:46,120 --> 00:13:51,200 จำเป็นต้องบันทึกบัฟเฟอร์ของเราในกอง 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 เรากำลังบันทึกใน กองไม่สแต็ค 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 อีกครั้งชื่อของที่ อาร์เรย์เป็นตัวชี้ 294 00:15:01,550 --> 00:15:04,200 ดังนั้นเราจึงไม่จำเป็นต้องทำเครื่องหมายอาร์เรย์ 295 00:15:04,200 --> 00:15:07,270 แต่ C, C ตัวอักษร ที่นี่ไม่ได้เป็นอาร์เรย์ 296 00:15:07,270 --> 00:15:08,390 มันเป็นเพียงตัวแปร 297 00:15:08,390 --> 00:15:11,840 และดังนั้นเราจึงจำเป็นที่จะผ่าน เครื่องหมายคเพื่อแสดงให้เห็น 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 ที่ฉันกรอก arr กับ ที่มีความหมาย 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 ผมยึดและร้อยละ ร้อยละงและอื่น ๆ ด้วย 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-- ถ้าคุณมีเครื่องเล่นดีวีดี คือการเปรียบเทียบผมมักจะใช้ here-- 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 คุณไบต์ที่ 100 ไบต์ 1,000, และอื่น ๆ ? 346 00:17:39,290 --> 00:17:44,340 คุณสามารถใช้ fseek ไปโดยพลการย้าย ตัวบ่งชี้ที่ข้างหน้าหรือถอยหลัง 347 00:17:44,340 --> 00:17:46,744 >> และ ftell อีกครั้ง คล้ายกับเครื่องเล่นดีวีดี 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 อีกครั้งนี้เป็นเพียง รอยขีดข่วนบนพื้นผิว 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 ฉันลอยด์ดั๊ก 359 00:18:17,640 --> 00:18:19,750 นี่คือ CS50 360 00:18:19,750 --> 00:18:21,669