>> 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