SPEAKER: เพื่อให้ห่างไกลเป็นไปได้ ว่าส่วนใหญ่ของโปรแกรมของคุณ ได้รับบิตชั่วคราว คุณเรียกใช้โปรแกรมเช่นมาริโอหรือโลภ มันไม่สิ่งที่มันอาจจะแจ้งให้ ผู้ใช้สำหรับข้อมูลบางอย่าง พิมพ์บางอย่างเพื่อการส่งออกหน้าจอ แต่แล้วเมื่อโปรแกรมของคุณมากกว่า มีจริงๆไม่มีหลักฐาน มันก็ทำงานที่เคยอยู่ในสถานที่แรก ผมหมายถึงแน่ใจว่าคุณอาจไม่เคยมีใคร มันเปิดหน้าต่าง terminal, แต่ถ้าคุณล้างหน้าจอของคุณมี หลักฐานที่แสดงว่าจริงๆมันไม่มีตัวตน เราไม่ได้มีวิธีการจัดเก็บ ข้อมูลถาวรข้อมูล ที่มีอยู่หลังจากที่เรา โปรแกรมที่ได้หยุดการทำงาน หรือเราไม่ได้ถึงจุดนี้ โชคดีที่ว่าไม่ค ให้เรามีความสามารถในการ การทำเช่นนี้โดยการใช้ สิ่งที่เรียกว่า ไฟล์โครงสร้างที่พื้น แสดงให้เห็นถึงไฟล์ที่คุณจะสองเท่า คลิกที่เครื่องคอมพิวเตอร์ของคุณถ้าคุณ ใช้ในสภาพแวดล้อมที่ผู้ใช้แบบกราฟิก โดยทั่วไปเมื่อทำงาน กับคเราจริง จะได้ร่วมงานกับ ตัวชี้ไปยังไฟล์ stars-- files-- ยกเว้นนิด ๆ หน่อย ๆ เมื่อเราพูดถึงคู่ ฟังก์ชั่นที่ ทำงานร่วมกับตัวชี้ไฟล์ คุณไม่จำเป็นต้องมีการขุดจริงๆ ลึกเกินไปในตัวชี้เข้าใจ ตัวเอง มีบิตเล็กเล็กน้อย ที่เราจะพูดคุยเกี่ยวกับพวกเขา แต่โดยทั่วไปยื่นคำแนะนำและ ชี้ขณะที่สัมพันธ์กัน จะไม่ตรงกับสิ่งเดียวกัน ตอนนี้สิ่งที่ฉันหมายถึงเมื่อ ผมบอกว่าข้อมูลถาวร? ข้อมูลถาวรคืออะไร? ทำไมเราดูแลเกี่ยวกับมันได้หรือไม่ พูดเช่นว่า คุณกำลังใช้งานโปรแกรม หรือที่คุณได้เขียนใหม่ โปรแกรมที่เป็นเกม และคุณต้องการที่จะติดตาม ทั้งหมดของการเคลื่อนไหวของผู้ใช้ เพื่อที่ว่าบางทีถ้าอะไรผิดพลาด คุณสามารถตรวจสอบแฟ้มหลังจากเกม นั่นคือสิ่งที่เราหมายถึงเมื่อเรา พูดคุยเกี่ยวกับข้อมูลถาวร ในหลักสูตรของการทำงานของคุณ โปรแกรมมีการสร้างไฟล์ และเมื่อโปรแกรมของคุณ ได้หยุดการทำงาน แฟ้มที่ยังคงมีอยู่ในระบบของคุณ และเราสามารถมองไปที่มันและตรวจสอบมัน และเพื่อให้โปรแกรมที่จะถูกตั้งค่า ได้สร้างข้อมูลบางอย่างถาวร ข้อมูลที่มีอยู่หลังจากที่โปรแกรม ทำงานเสร็จ ตอนนี้สิ่งที่ฟังก์ชั่นเหล่านี้ที่ทำงาน กับการสร้างและจัดการไฟล์ พวกเขาในรูปแบบต่างๆ อาศัยอยู่ใน io.h มาตรฐาน ซึ่งเป็นไฟล์ส่วนหัวที่ คุณได้รับปอนด์แนวโน้ม รวมทั้งที่ด้านบนของสวย มากทุกโปรแกรมของคุณ เพราะมันมีหนึ่งใน ฟังก์ชั่นที่มีประโยชน์ที่สุดสำหรับเรา printf ที่ยังช่วยให้ อาศัยอยู่ในมาตรฐาน io.h. ดังนั้นคุณไม่จำเป็นต้องที่จะนำพารวม ไฟล์เพิ่มเติมใด ๆ อาจจะ เพื่อที่จะทำงานกับคำแนะนำไฟล์ ตอนนี้ทุกฟังก์ชั่นตัวชี้ไฟล์เดียว หรือทุกไฟล์เดียว I / O, การป้อนข้อมูลการส่งออก ฟังก์ชั่นยอมรับว่าเป็นหนึ่งใน ของตัวแปรหรือปัจจัยการผลิตของตน pointer-- ไฟล์ยกเว้น สำหรับหนึ่ง fopen ซึ่ง คือสิ่งที่คุณใช้ในการรับไฟล์ ตัวชี้ในสถานที่แรก แต่หลังจากที่คุณได้เปิด แฟ้มและคุณได้รับตัวชี้ไฟล์ จากนั้นคุณสามารถส่งพวกเขาเป็น ข้อโต้แย้งที่จะฟังก์ชั่นต่างๆ ที่เรากำลังจะพูดคุยเกี่ยวกับ วันนี้เช่นเดียวกับคนอื่น ๆ เพื่อให้คุณสามารถทำงานกับไฟล์ ดังนั้นมีหกสวย คนที่พื้นฐานร่วมกัน ที่เรากำลังจะพูดถึงในวันนี้ fopen และสหาย fclose ฟังก์ชั่น fgetc และฟังก์ชั่นของมัน fputc, และฟังก์ชั่น fread และสหายของมัน fwrite ถ้าอย่างนั้นเราจะได้รับสิทธิเป็นมัน fopen-- สิ่งที่ไม่ได้ทำอย่างไร ดีก็เปิดแฟ้มและมัน ช่วยให้คุณมีตัวชี้แฟ้มไป เพื่อให้คุณสามารถใช้ว่า ยื่นชี้เป็นอาร์กิวเมนต์ ใด ๆ ของไฟล์อื่น ๆ I / O ฟังก์ชั่น สิ่งที่สำคัญที่สุด ที่ต้องจำกับ fopen คือว่าหลังจากที่คุณได้เปิด ยื่นหรือทำสายเช่นหนึ่งที่นี่ คุณต้องตรวจสอบเพื่อให้แน่ใจว่า ที่ตัวชี้ที่คุณได้กลับมา ไม่เท่ากับเป็นโมฆะ หากคุณยังไม่ได้ดูวิดีโอบน คำแนะนำนี้ไม่อาจทำให้รู้สึก แต่ถ้าคุณพยายามและ dereference การเรียกคืนตัวชี้โมฆะ โปรแกรมของคุณอาจจะต้องทนทุกข์ทรมาน การแบ่งส่วน [ไม่ได้ยิน] เราต้องการที่จะให้แน่ใจว่าเรา มีตัวชี้ที่ถูกต้องกลับไป ส่วนใหญ่เวลาที่เราจะ มีอากาศเป็นตัวชี้ที่ถูกต้องกลับไป และมันจะไม่เป็นปัญหา ดังนั้นเราจะโทรไปยัง fopen? มันดูสวยมากเช่นนี้ ดาวไฟล์ ptr-- PTR เป็นทั่วไป ชื่อไฟล์ pointer-- fopen และเราผ่านในสองสิ่งที่ชื่อไฟล์ และการดำเนินการที่เราต้องการที่จะดำเนินการ ดังนั้นเราอาจจะมีการเรียกร้องที่มีลักษณะเช่น ดาวไฟล์ this-- PTR 1 เท่ากับ fopen file1.txt และการดำเนินงานที่ผมได้เลือกเป็นอา ดังนั้นสิ่งที่คุณคิดว่า r คือที่นี่? สิ่งที่ชนิดของสิ่งที่เรามี อาจจะสามารถทำเพื่อไฟล์? ดังนั้น r คือการดำเนินงานที่เรา เลือกเมื่อเราต้องการที่จะอ่านไฟล์ ดังนั้นเราจึงจะโดยทั่วไปเมื่อ เราโทรออกเช่นนี้ ได้รับตัวเองชี้ไฟล์ เช่นที่เราก็สามารถอ่านข้อมูล จาก file1.txt ในทำนองเดียวกันเราสามารถเปิดไฟล์ 2.txt สำหรับการเขียนและเพื่อให้เราสามารถผ่าน ptr2, ตัวชี้แฟ้มเราได้สร้างที่นี่ เป็นอาร์กิวเมนต์ฟังก์ชั่นใด ๆ ที่ เขียนข้อมูลไปยังแฟ้ม และคล้ายกับการเขียนมี นอกจากนี้ยังมีตัวเลือกในการผนวกเป็น ความแตกต่างระหว่าง การเขียนและการผนวก การที่เมื่อคุณเขียนไปยังแฟ้ม ถ้าคุณโทรไป fopen ในการเขียน และไฟล์ที่มีอยู่แล้วก็ จะเขียนทับไฟล์ทั้งหมด มันจะเริ่มต้น ที่จุดเริ่มต้นมาก การลบข้อมูลทั้งหมด ที่มีอยู่แล้ว ในขณะที่ถ้าคุณเปิดสำหรับการผนวก, มันจะไปถึงจุดสิ้นสุดของไฟล์ ถ้ามีอยู่แล้วข้อความใน หรือข้อมูลที่อยู่ในนั้น และมันก็จะเริ่มต้น เขียนจากที่นั่น ดังนั้นคุณจะไม่สูญเสียใด ๆ ของ ข้อมูลที่คุณเคยทำมาก่อน ไม่ว่าคุณต้องการที่จะเขียนหรือผนวก การเรียงลำดับของขึ้นอยู่กับสถานการณ์ แต่คุณอาจจะรู้ว่า การดำเนินการที่ถูกต้องคือเมื่อเวลามาถึง ดังนั้นที่ fopen สิ่งที่เกี่ยวกับ fclose? ดีสวยเพียง fclose เพียงแค่ยอมรับตัวชี้แฟ้ม และในขณะที่คุณอาจคาดหวัง ปิดแฟ้มที่ และเมื่อเราได้ปิดไฟล์ที่เราไม่สามารถ ดำเนินการใด ๆ ไฟล์ I / O ฟังก์ชั่น, การอ่านหรือเขียนในแฟ้มที่ เราต้องกลับมาเปิด ยื่นอีกครั้งในการสั่งซื้อ เพื่อดำเนินการต่อการทำงานร่วมกับ โดยใช้ I / O ฟังก์ชั่น วิธี fclose ดังนั้นเรากำลังทำ การทำงานกับไฟล์นี้ และทั้งหมดที่เราต้องการที่จะผ่านคือ ชื่อของตัวชี้ไฟล์ ดังนั้นคู่สไลด์ที่ผ่านมาเรา fopened แฟ้มข้อความ 1 จุดสำหรับการอ่าน และเราได้รับมอบหมายว่า แฟ้มชี้ไป ptr1 ตอนนี้เราได้ตัดสินใจที่เรา ทำอ่านจากแฟ้มที่ เราไม่จำเป็นต้องดำเนินการใด ๆ ขึ้นอีกด้วยค่ะ เราก็สามารถ fclose ptr1 และในทำนองเดียวกันที่เราจะทำได้ fclose คนอื่น ๆ ทั้งหมดขวา เพื่อให้เปิดและปิด เหล่านี้เป็นสองขั้นพื้นฐาน เริ่มต้นการดำเนินงาน ตอนนี้เราต้องการจริง ทำบางสิ่งที่น่าสนใจ และฟังก์ชั่นเป็นครั้งแรกที่เราจะ เห็นว่าจะทำอะไรที่เป็น fgetc-- ยื่นได้รับตัวอักษร นั่นคือสิ่งที่ fgetc ทั่วไป จะแปลให้ เป้าหมายในชีวิตก็คือ อ่านตัวอักษรถัดไป หรือถ้าเป็นของคุณมาก สายแรกที่ fgetc สำหรับแฟ้มโดยเฉพาะอย่างยิ่ง ตัวอักษรตัวแรก แต่แล้วหลังจากนั้น คุณจะได้รับอย่างใดอย่างหนึ่งต่อไป ตัวอักษรถัดไปมากของไฟล์ที่ และเก็บไว้ในตัวแปรตัวอักษร ในขณะที่เราได้ทำที่นี่ CH ถ่านเท่ากับ fgetc, ผ่านในชื่อของตัวชี้ไฟล์ อีกครั้งก็มาก ที่สำคัญที่นี่ที่จะจำ ว่าในการที่จะมี การดำเนินการนี​​้ประสบความสำเร็จ ตัวชี้ไฟล์ตัวเองคงจะ รับการเปิดสำหรับการอ่าน เราไม่สามารถอ่านตัวอักษรจากไฟล์ ตัวชี้ว่าเราเปิดสำหรับการเขียน เพื่อให้เป็นหนึ่งใน ข้อ จำกัด ของ fopen ใช่มั้ย? เราต้อง จำกัด ตัวเราเองเท่านั้นที่จะดำเนินการ การดำเนินการหนึ่งที่มีตัวชี้แฟ้มหนึ่ง ถ้าเราต้องการที่จะอ่านและ เขียนจากแฟ้มเดียวกัน เราจะต้องเปิดสองแยก ตัวชี้ไปยังไฟล์ file-- เดียวกัน หนึ่งสำหรับการอ่านซึ่งเป็นหนึ่งในการเขียน ดังนั้นอีกครั้งเหตุผลเดียว ผมนำขึ้นในขณะนี้คือ เพราะถ้าเรากำลังจะโทรออก เพื่อ fgetc ว่าคงจะชี้แฟ้ม รับการเปิดสำหรับการอ่าน และจากนั้นสวยเพียง ทั้งหมดที่เราต้องทำ จะผ่านในชื่อของตัวชี้ไฟล์ ดังนั้น CH ถ่านเท่ากับ fgetc ptr1 ที่จะได้รับเรา character-- ต่อไป หรืออีกครั้งถ้านี้เป็นครั้งแรก เวลาที่เราได้ทำสายนี้ character-- แรกของสิ่งที่ แฟ้มดังกล่าวจะชี้ไปตาม ptr1 จำได้ว่านั่นคือแฟ้มข้อความ 1 จุด มันจะได้รับตัวอักษรตัวแรกของ และเราจะเก็บไว้ในตัวแปร ch ได้ ตรงไปตรงสวย ดังนั้นเราจึงได้เพียง แต่มองที่สาม และฟังก์ชั่นที่เรามีอยู่แล้ว สามารถทำสิ่งที่ระเบียบสวย ดังนั้นถ้าเราใช้ความสามารถนี้ ในการได้รับตัวอักษร และเราห่วงดังนั้นเรา it-- ยังคงได้รับตัวอักษร จากไฟล์ซ้ำ มากกว่าและตอนนี้เรา over-- สามารถอ่านทุกเดียว ลักษณะของไฟล์ และถ้าเราพิมพ์ตัวละครทุกตัว ทันทีหลังจากที่เราอ่านมัน เราได้อ่านในขณะนี้จากแฟ้มและ พิมพ์เนื้อหาของหน้าจอ เราได้ตัดแบ่งได้อย่างมีประสิทธิภาพ แฟ้มที่อยู่บนหน้าจอ และนั่นคือสิ่งที่เป็น แมวคำสั่ง Linux ไม่ ถ้าคุณพิมพ์แมวในชื่อแฟ้ม จะพิมพ์ออกเนื้อหาทั้งหมด ของไฟล์ในหน้าต่างปลายทางของคุณ และเพื่อให้วงเล็ก ๆ น้อย ๆ ที่นี่ เพียงสามบรรทัดของรหัส แต่มันได้อย่างมีประสิทธิภาพที่ซ้ำกัน แมวคำสั่ง Linux ดังนั้นรูปแบบนี้อาจจะ ดูแปลกเล็กน้อย แต่นี่คือสิ่งที่เกิดขึ้นที่นี่ ในขณะที่ชเท่ากับ fgetc, PTR ไม่ เท่ากับ EOF-- มันเป็นคำหนึ่งทั้ง แต่ขอทำลายมันลงเพียง ดังนั้นจึงเป็นที่ชัดเจนเกี่ยวกับไวยากรณ์ ฉันได้รวมมัน เพื่อประโยชน์ของพื้นที่ แม้ว่ามันจะเป็นเรื่องเล็ก ๆ น้อย ๆ syntactically หากิน ดังนั้นในส่วนนี้ในด้านขวาสีเขียว ตอนนี้สิ่งที่ทำ? ดีที่เป็นเพียงการเรียก fgetc ของเราใช่มั้ย? เราได้เห็นว่าก่อนที่จะ มันได้รับการอย่างใดอย่างหนึ่ง ตัวอักษรจากไฟล์ จากนั้นเราเปรียบเทียบว่า ตัวอักษร EOF กับ EOF เป็นค่าพิเศษที่ ที่กำหนดไว้ใน io.h มาตรฐานซึ่ง เป็นจุดสิ้นสุดของตัวละครของไฟล์ ดังนั้นโดยทั่วไปสิ่งที่จะเกิดขึ้น เป็นห่วงนี้จะอ่านตัวอักษร เปรียบเทียบกับ EOF ที่ ในตอนท้ายของตัวละครของไฟล์ หากพวกเขาไม่ตรงกับเพื่อให้เรามีไม่ได้ ถึงจุดสิ้นสุดของแฟ้ม เราจะพิมพ์ตัวอักษรที่ออก แล้วเราจะกลับไปที่ จุดเริ่มต้นของวงอีกครั้ง เราจะได้รับตัวละครให้ตรวจสอบ กับ EOF, พิมพ์ออกมาและอื่น ๆ และอื่น ๆ และอื่น ๆ วนลูปผ่านไปในทางที่ จนกว่าเราจะได้ถึงจุดสิ้นสุดของไฟล์ และแล้วจากจุดนั้น เราจะมีการพิมพ์ จากเนื้อหาทั้งหมดของไฟล์ ดังนั้นอีกครั้งที่เราได้เห็นเพียง fopen, fclose และ fgetc และแล้วเราสามารถทำซ้ำ คำสั่งลินุกซ์มินัล ที่ผมกล่าวว่าที่จุดเริ่มต้น เรามี fgetc และ fputc, และ fputc เป็นสหาย ฟังก์ชั่นของ fgetc และอื่น ๆ ที่คุณอาจคิด มันจะเทียบเท่าการเขียน มันช่วยให้เราสามารถที่จะเขียน ตัวเดียวไปยังแฟ้ม อีกครั้งเป็นข้อแม้เพียง เหมือนมันเป็นกับ fgetc ไฟล์ ที่เรากำลังเขียนเพื่อรับคงจะ เปิดสำหรับการเขียนหรือการผนวก ถ้าเราพยายามและใช้ fputc ที่ไฟล์ ที่เราได้เปิดสำหรับการอ่าน เราจะต้องทนทุกข์ทรมาน บิตของความผิดพลาด แต่การเรียกร้องเป็นเรื่องง่ายสวย ทุน fputc ptr2 ทั้งหมด ที่จะทำมันเป็นเรื่อง จะเขียนตัวอักษร เป็นลงในไฟล์ 2 จุด ข้อความซึ่งเป็นชื่อของ ไฟล์ที่เราเปิดและได้รับมอบหมาย ตัวชี้ไป ptr2 ดังนั้นเรากำลังจะเขียน ทุนที่จะยื่นข้อความ 2 จุด และเราจะเขียนอัศเจรีย์ ชี้ไปยื่น 3 จุด ข้อความซึ่งถูกชี้ไปตาม ptr3 ดังนั้นอีกครั้งสวยตรงไปตรงมาที่นี่ แต่ตอนนี้เราสามารถทำสิ่งอื่น เรามีตัวอย่างนี้ เราเป็นเพียงแค่การไปกว่า เกี่ยวกับความสามารถที่จะทำซ้ำแมว คำสั่ง Linux หนึ่งที่พิมพ์ออก ไปที่หน้าจอ ดีตอนนี้ที่เรามีความสามารถ การอ่านตัวอักษรจากไฟล์ และเขียนตัวอักษรไฟล์ ทำไมเราไม่เพียงแค่ใช้แทนว่า โทร printf ที่มีการเรียกร้องให้ fputc และตอนนี้เราได้ทำซ้ำซีพี คำสั่งลินุกซ์ขั้นพื้นฐานมาก ที่เราพูดคุยเกี่ยวกับทางยาว ที่ผ่านมาในลินุกซ์คำสั่งวิดีโอ เราได้อย่างมีประสิทธิภาพ ซ้ำว่าที่นี่ เรากำลังอ่านตัวอักษรและแล้วเรา ตัวอักษรที่เขียนไปยังแฟ้มอื่น อ่านจากไฟล์เดียวเขียน ไปยังอีกซ้ำแล้วซ้ำอีก และอีกครั้งจนกว่าเราจะตี EOF เราได้มีการสิ้น ไฟล์ที่เรากำลังพยายามที่จะคัดลอกจาก และโดยที่เราจะได้เขียนทั้งหมด ของตัวละครที่เราต้องการไปยังแฟ้ม ที่เรากำลังเขียนถึง ดังนั้นนี่คือซีพี, ลินุกซ์คัดลอกคำสั่ง ที่จุดเริ่มต้นของ วิดีโอนี้ผมมีข้อแม้ ที่เราจะพูดคุย เล็กน้อยเกี่ยวกับตัวชี้ โดยเฉพาะที่นี่เป็นที่ที่เราอยู่ จะพูดคุยเกี่ยวกับตัวชี้ นอกเหนือไปจากตัวชี้ไฟล์ ดังนั้นฟังก์ชั่นนี้ดูชนิดของที่น่ากลัว มันมีตัวแปรหลาย มีจำนวนมากที่เกิดขึ้นที่นี่ มีจำนวนมากที่แตกต่างกันคือ สีและข้อความ แต่จริงๆมันเป็นเพียง รุ่นทั่วไปของ fgetc ที่ช่วยให้เราได้รับใด ๆ ปริมาณของข้อมูล มันอาจจะเป็นบิตไม่มีประสิทธิภาพถ้าเรา ได้รับตัวละครหนึ่งที่เวลา iterating ผ่านไฟล์ ตัวละครตัวหนึ่งที่เวลา มันจะไม่ดีกว่าที่จะได้รับ 100 ได้ตลอดเวลาหรือ 500 ในเวลา? ดี fread และการทำงานของมัน fwrite ซึ่งเราจะพูดคุยเกี่ยวกับ ในครั้งที่สองที่ช่วยให้เราสามารถทำเพียงแค่ว่า เราสามารถอ่านจำนวนข้อ ข้อมูลจากแฟ้ม และเราเก็บไว้ที่อื่นชั่วคราว แต่ความสามารถในการเพียง พอดีในตัวแปรเดียว เราอาจจะต้องเก็บไว้ในอาร์เรย์ และเพื่อให้เราผ่านในสี่ ข้อโต้แย้งที่จะ fread-- ตัวชี้ ไปยังสถานที่ที่เรากำลัง จะเก็บข้อมูล วิธีการที่มีขนาดใหญ่หน่วยของข้อมูลที่แต่ละ จะเป็นวิธีการที่หลายหน่วยงานของข้อมูล เราต้องการที่จะได้รับและจาก ไฟล์ที่เราต้องการที่จะได้รับพวกเขา อาจจะแสดงที่ดีที่สุด ด้วยตัวอย่างที่นี่ ดังนั้นขอบอกว่าเราประกาศ อาร์เรย์ของจำนวนเต็ม 10 เราได้ประกาศเพียงแค่ใน สแต็คพล int ARR 10 ดังนั้นที่ตรงไปตรงสวย ตอนนี้สิ่งที่เรากำลังทำอยู่ว่าเป็น frecall คือเรากำลังอ่านขนาดของ int 10 ครั้งไบต์ของข้อมูล ขนาดของการเป็น int four-- ที่ ขนาดของจำนวนเต็มในค ดังนั้นสิ่งที่เรากำลังทำคือการที่เรากำลังอ่าน 40 ไบต์มูลค่าของข้อมูล จากไฟล์ที่ชี้ไปตาม PTR และเรากำลังจัดเก็บเหล่านั้น 40 ไบต์ที่ไหนสักแห่ง ที่เราได้ตั้งสำรอง 40 ไบต์มูลค่าของหน่วยความจำ โชคดีที่เราได้ทำมาแล้วว่าด้วยการ ประกาศ ARR อาร์เรย์ที่มีสิทธิ นั่นคือความสามารถในการถือครอง 10 หน่วยสี่ไบต์ ดังนั้นในการรวมสามารถถือ 40 ไบต์มูลค่าของข้อมูล และตอนนี้เรากำลังอ่าน 40 ไบต์ ข้อมูลจากแฟ้ม และเรากำลังจัดเก็บไว้ใน ARR จำจากวิดีโอในตัวชี้ว่า ชื่อของอาร์เรย์เช่น ARR ที่ เป็นจริงเพียงตัวชี้ องค์ประกอบแรกของ ดังนั้นเมื่อเราผ่านใน ARR มีเรา ในความเป็นจริงผ่านในตัวชี้ ในทำนองเดียวกันเราสามารถทำ this-- เราไม่จำเป็นต้อง จำเป็นต้องบันทึกบัฟเฟอร์ของเราในกอง เรายังสามารถจัดสรรแบบไดนามิก บัฟเฟอร์เช่นนี้ใช้ malloc โปรดจำไว้ว่าเมื่อเรา แบบไดนามิกจัดสรรหน่วยความจำ เรากำลังบันทึกใน กองไม่สแต็ค แต่ก็ยังคงบัฟเฟอร์ มันก็ยังคงอยู่ในกรณีนี้ ถือ 640 ไบต์ของข้อมูล เพราะคู่ใช้เวลาถึงแปดไบต์ และเราขอ 80 ของพวกเขา เราต้องการที่จะมีพื้นที่ จะถือ 80 คู่ ดังนั้น 80 ครั้ง 8 เป็นข้อมูล 640 ไบต์ และเรียกร้องให้ fread ที่ การจัดเก็บภาษี 640 ไบต์ของข้อมูล จากไฟล์ที่ชี้ไปตาม PTR และเก็บไว้ในขณะนี้ใน arr2 ตอนนี้เรายังสามารถรักษา fread เช่นเดียวกับการเรียกร้องให้ fgetc ในกรณีนี้เราเพียงแค่พยายามที่จะ ได้ตัวหนึ่งจากไฟล์ และเราไม่จำเป็นต้อง อาร์เรย์ที่จะถือตัวอักษร เราก็สามารถเก็บไว้ใน ตัวแปรตัวอักษร จับ แต่เป็นที่ เมื่อเราก็มีตัวแปร เราจำเป็นต้องผ่านใน ที่อยู่ของตัวแปรที่ เพราะจำได้ว่า อาร์กิวเมนต์แรกที่จะ fread เป็นตัวชี้ไปยังสถานที่และหน่วยความจำ ที่เราต้องการจะจัดเก็บข้อมูล อีกครั้งชื่อของที่ อาร์เรย์เป็นตัวชี้ ดังนั้นเราจึงไม่จำเป็นต้องทำเครื่องหมายอาร์เรย์ แต่ C, C ตัวอักษร ที่นี่ไม่ได้เป็นอาร์เรย์ มันเป็นเพียงตัวแปร และดังนั้นเราจึงจำเป็นที่จะผ่าน เครื่องหมายคเพื่อแสดงให้เห็น ว่าที่อยู่ที่เราต้องการ ในการจัดเก็บนี้หนึ่งไบต์ของข้อมูล ตัวละครหนึ่งที่ เรากำลังเก็บรวบรวมจาก PTR Fwrite-- ฉันจะผ่านไป นี้น้อยมาก quickly-- สวยมาก แน่นอนเทียบเท่า fread ยกเว้นว่ามันจะเป็นสำหรับการเขียน แทนการอ่านหนังสือเพียง เช่น other-- ที่เราได้มีการเปิด และปิดรับตัวอักษร เขียนตัวอักษร ตอนนี้ก็จะได้รับโดยพลการ ปริมาณของข้อมูล พลจำนวนที่เหมาะสมของข้อมูล ดังนั้นเพียงแค่เหมือนก่อนที่เราสามารถทำได้ มีอาร์เรย์ของจำนวนเต็ม 10 ที่เรามีอยู่แล้ว ข้อมูลที่เก็บไว้อาจ มันก็อาจจะสายบางส่วนของรหัส ว่าควรจะไประหว่างทั้งสอง ที่ฉันกรอก arr กับ ที่มีความหมาย ผมเติมด้วยเลข 10 ที่แตกต่างกัน และแทนสิ่งที่ฉัน ทำคือการเขียนจาก ARR และการเก็บรวบรวมข้อมูลจาก ARR และฉันสละข้อมูลนั้น และวางลงในแฟ้ม ดังนั้นแทนที่จะมันมาจาก ไฟล์ไปยังบัฟเฟอร์ ตอนนี้เราไปจาก บัฟเฟอร์ไปยังแฟ้ม ดังนั้นมันจึงเป็นเพียงการย้อนกลับ ดังนั้นอีกครั้งเช่นเดียวกับก่อนหน้านี้ที่เราสามารถทำได้ ยังมีก้อนกองของหน่วยความจำ ที่เราได้แบบไดนามิก การจัดสรรและอ่านจาก และเขียนว่าไปยังแฟ้ม และเรายังมีตัวแปรเดียว สามารถถือหนึ่งไบต์ ข้อมูลดังกล่าวเป็นตัวอักษร แต่อีกครั้งที่เราต้องผ่านใน ที่อยู่ของตัวแปรที่ เมื่อเราต้องการที่จะอ่านจากมัน ดังนั้นเราจึงสามารถเขียนข้อมูล เราพบตามที่อยู่ที่ ตัวชี้แฟ้ม PTR มีจำนวนมากอื่น ๆ ที่เป็น ไฟล์ที่ดี I / O ฟังก์ชั่น ที่จะทำสิ่งต่างๆที่นอกเหนือจาก คนที่เราได้พูดคุยเกี่ยวกับวันนี้ สองสามคน คุณอาจพบว่ามีประโยชน์ มี fgets และ fputs, ซึ่งเทียบเท่า ของ fgetc และ fputc แต่สำหรับการอ่าน สายเดียวจากแฟ้ม แทนที่จะเป็นตัวเดียว มันจะอ่านสตริงทั้งหมด fprintf ซึ่งโดยทั่วไปจะช่วยให้ ให้คุณใช้ printf จะเขียนไปยังแฟ้ม ดังนั้นเพียงแค่ว่าคุณสามารถทำ แทนค่าตัวแปรที่ใช้ ผมยึดและร้อยละ ร้อยละงและอื่น ๆ ด้วย printf ในทำนองเดียวกันคุณสามารถใช้ สตริง printf และสิ่งที่พิมพ์ เช่นเดียวกับที่ไปยังแฟ้ม fseek-- ถ้าคุณมีเครื่องเล่นดีวีดี คือการเปรียบเทียบผมมักจะใช้ here-- เป็นประเภทเช่นการใช้ของคุณ ย้อนกลับและไปข้างหน้าอย่างรวดเร็ว ปุ่มที่จะย้ายไปรอบ ๆ ภาพยนตร์ ทำนองเดียวกันคุณสามารถย้ายไปรอบ ๆ ไฟล์ หนึ่งในสิ่งที่อยู่ภายใน ว่าโครงสร้างของไฟล์ ที่จะสร้างคให้คุณเป็นตัวบ่งชี้ คุณจะอยู่ที่ไหนในแฟ้ม คุณที่มาก เริ่มต้นที่ศูนย์ไบต์? คุณไบต์ที่ 100 ไบต์ 1,000, และอื่น ๆ ? คุณสามารถใช้ fseek ไปโดยพลการย้าย ตัวบ่งชี้ที่ข้างหน้าหรือถอยหลัง และ ftell อีกครั้ง คล้ายกับเครื่องเล่นดีวีดี เป็นเหมือนนาฬิกาเล็ก ๆ น้อย ๆ ที่จะบอก คุณกี่นาทีและวินาทีคุณ มีความเป็นภาพยนตร์โดยเฉพาะอย่างยิ่ง ในทำนองเดียวกัน ftell จะบอกคุณว่า จำนวนไบต์คุณเป็นไฟล์ feof เป็นรุ่นที่แตกต่างกัน ของการตรวจสอบว่าคุณได้ ถึงจุดสิ้นสุดของไฟล์ และ ferror เป็นฟังก์ชั่น ที่คุณสามารถใช้ การตรวจสอบว่ามีบางสิ่งบางอย่าง ไปทำงานที่ผิดปกติกับไฟล์ อีกครั้งนี้เป็นเพียง รอยขีดข่วนบนพื้นผิว ยังคงมีความอุดมสมบูรณ์มากขึ้นไฟล์ I / O ฟังก์ชั่นใน io.h. มาตรฐาน แต่ตอนนี้อาจจะได้รับคุณ เริ่มทำงานกับตัวชี้ไฟล์ ฉันลอยด์ดั๊ก นี่คือ CS50