สวัสดีและยินดีต้อนรับกลับ
ในการบรรยายครั้งนี้ ผมอยากจะจัดให้ การสาธิตความท้าทายแรกของเราในการอ่านจากไฟล์
เราจะนับจำนวน บรรทัดภายในไฟล์โดยใช้ fgetc
มาสร้างบล็อคโค้ดกัน และมาสร้างโครงการของเรากันเถอะ
นี่เราแค่จะบอกว่า โครงการใหม่ และมันจะเป็นการจัดแนวการอ่านขั้นพื้นฐาน
สมมติว่าคอนโซลแอปพลิเคชัน select c และเราจะตั้งชื่อพื้นฐานหรือนับจำนวนบรรทัดนี้ว่า
เกี่ยวกับการนับจำนวนบรรทัด
และนี่จะทำให้เกิด หลักของเรา ค ซึ่งเป็นสิ่งที่ดี
ก่อนที่เราจะเริ่มต้นโปรแกรมนี้ด้วยซ้ำ แม้ว่าเราต้องการสร้างไฟล์ของเราที่มีข้อความอยู่บ้าง
เนื่องจากเราไม่ได้เขียน เราแค่ การอ่านในจำนวนบรรทัด
จึงต้องรู้ว่าที่ไหน คุณบันทึกโครงการของคุณ
ฉันกำลังบันทึกโครงการของฉันไว้ข้างใน ของไดเรกทอรีดาวน์โหลดของฉัน
และเมื่อคุณสร้างโครงการใหม่ ภายในไดเร็กทอรีดาวน์โหลดของคุณ คุณไปที่ชื่อโปรเจ็กต์นั้น
ชื่อโครงการของฉันคือ นับจำนวนบรรทัด
ดังนั้นภายในนับจำนวน สายฉันมีหลักของฉัน ไฟล์ค
ฉันสามารถสร้างไฟล์ของฉันได้ ในไดเร็กทอรีนี้
ดังนั้นฉันจะไปทางขวา คลิกภายในไดเร็กทอรีและฉันจะบอกว่าใหม่และฉัน
จะสร้างไฟล์ข้อความ
นี่คือเอกสารข้อความใหม่ และมันจะเป็นการทดสอบ ข้อความ.
ฉันจะเปิดมันขึ้น
คุณสามารถเปิดในใด ๆ บรรณาธิการ นี่คือ wordpad
กำลังจะใส่ บางบรรทัดสวัสดี
นี่จะเป็นการทดสอบสำหรับ บัญชี, โอเค, ก, แค่พวงของบรรทัด แล้วก็คุณ
ต้องการบันทึกและปิด
ตอนนี้ฉันสร้างไฟล์ของฉันแล้ว ฉันสามารถ เริ่มดำเนินการบางอย่างจริงๆ
สิ่งแรกที่อยากทำ คือฉันต้องการสร้างตัวแปรคงที่สำหรับชื่อไฟล์
ผมก็เลยใช้define
สิ่งนี้จะเป็นตัวแทนของชื่อไฟล์ของฉัน
ฉันแค่จะบอกว่าชื่อไฟล์ทั้งหมด ตัวพิมพ์ใหญ่ และนี่จะเท่ากับสิ่งที่ฉันเพิ่งตั้งชื่อไป
ซึ่ง อีกครั้งคือการทดสอบ ข้อความดังนั้นทดสอบ ข้อความ.
และรหัสทั้งหมดของฉันกำลังจะหมดไป ให้เป็นหน้าที่หลักของฉัน
ฉันต้องการสร้างตัวชี้ไฟล์
จำไว้ว่า การสร้างตัวชี้ไฟล์ คุณแค่ใช้ตัวพิมพ์ใหญ่ทั้งหมด FILE แล้วพูดว่า
star แล้วคุณก็แค่พูดว่า fp
และฉันกำลังจะไป เริ่มต้นให้เป็นโมฆะ
เมื่อใดก็ตามที่คุณอ่านไฟล์ และการเขียน คุณต้องแน่ใจว่าได้รวม
lib มาตรฐานไว้ด้วย ชม.
ฉันกำลังจะสร้างซิงเกิ้ล ตัวละครที่จะใช้
ฉันแค่จะบอกว่าถ่าน แล้วฉันจะสร้างตัวนับสำหรับทุกบรรทัดของฉัน
ฉันจะบอกว่าการนับบรรทัด int
และผมจะเริ่มต้นมันเป็น 0
สิ่งแรกที่คุณต้องทำเมื่อ คุณอ่านจากไฟล์ประเภทใดก็ได้
คุณต้องเปิดมันขึ้นมา
ดังนั้น ฟังก์ชันเปิด f คือ จะส่งคืนตัวชี้ไฟล์
ดังนั้นฉันต้องการมอบหมายสิ่งนั้นให้กับ my ตัวแปร fp และฉันต้องการบอกว่า
f เปิดและชื่อของไฟล์ ชื่อที่ฉันกำหนดไว้แล้วเป็นค่าคงที่ ชื่อไฟล์
และอยากเปิดอ่าน และอ่านอย่างเดียวก็เลยบอกว่า r
ดังนั้นที่นี่ฉันต้องการทำ fopen กับ my ชื่อไฟล์เป็นค่าคงที่ของฉันแล้ว r ในเครื่องหมายคำพูดคู่นั่นคือโหมดของเรา
อยากอ่านอย่างเดียว
ไม่อยากเขียน.
ถ้าฉันทำ r บวก ฉัน จะเขียนเช่นกัน
ก่อนที่เราจะใช้ตัวชี้, the ตัวชี้แสดงถึงไฟล์
ฉันต้องการให้แน่ใจว่า ตัวชี้ไม่เท่ากับ null,
ผมเลยอยากทำ f
ผมอยากบอกว่า fp เท่ากับ null
แล้วถ้ามันเท่ากับโมฆะ ผมก็แค่ ต้องการแสดงข้อผิดพลาดเป็นการตอบแทน
เลยอยากทำบ้าง ไม่มีไฟล์ printf สิ่งที่คุณต้องการทำ
และกำลังจะถึงตอนนั้น
เราแค่อยากจะกลับไป ลบ 1 จากฟังก์ชันของเรา
หลังจากที่เราเปิดไฟล์แล้ว เราก็ สามารถเริ่มอ่านตัวอักษรได้จริง
ดังนั้นเราสามารถเขียน while loop และ เราต้องการจะพูดในขณะที่ตัวละครของเราซึ่งเป็นตัวละครที่เท่ากับ
fgetc
Fgetc กำลังอ่านอักขระตัวเดียว
เราส่งตัวชี้ไฟล์ของเราและ เราต้องการจะบอกว่าเราต้องการอ่านตัวละครจนกว่าเราจะเห็น
eof
เราก็เลยบอกไปจนไม่เท่ากับอ๊อฟ
แล้วเราจะกระโดดออกจาก วงของเรา ประมาณนี้
เราจะไปอ่านกันเป็นตัวอักษร จนกว่าเราจะไปถึงจุดสิ้นสุดของไฟล์
ตราบใดที่ตัวละครของเราไม่ใช่ การป้อนบรรทัด เราต้องการเพิ่มเฉพาะเมื่อเราเห็นการป้อนบรรทัด
เราจะบอกว่าถ้าตัวละครของเรา เท่ากับการป้อนบรรทัด จากนั้นเราต้องการเพิ่มตัวนับโดยพื้นฐาน
เราแค่อยากจะบอกว่าเส้นนับบวก บวกกับที่จะนับเส้นของเรา
แล้วเราก็กระโดดออกจากวง เมื่อเราไปถึงจุดสิ้นสุดของไฟล์.
แต่เราขอแนะนำของเราเท่านั้น บัญชีถ้าเราได้รับสายฟีด
สิ่งสุดท้ายที่คุณอยากทำเสมอ หลังจากที่คุณอ่านการเขียนของคุณเสร็จแล้ว คุณต้องการปิดไฟล์ของคุณ
ดังนั้นคุณอยากจะพูดว่า fclose และ แล้วส่งผ่านตัวชี้ไฟล์
แล้วเราก็อยากจะตั้ง ตัวชี้ไฟล์ของเรามีค่าเท่ากับ null
จากนั้นเราสามารถพิมพ์ จำนวนบรรทัดที่เราเรียกใช้
เราสามารถพูดได้ว่า printf จำนวนทั้งหมด ของเส้น r เปอร์เซ็นต์ d แบ็กสแลช n แล้วเราก็ใส่จำนวนบรรทัดได้
แล้วก็กลับจาก หลักอย่างนั้น
ดังนั้นอีกครั้งเพื่อข้ามรหัสนี้ เรา สร้างตัวชี้ไฟล์ของเรา
ตั้งค่าเป็น null สร้างอักขระและโลคัล ตัวแปรสำหรับการนับเส้น
เราเปิดไฟล์ของเราในบรรทัดที่ 12
เราเปิดในโหมดอ่านอย่างเดียว
เราตรวจสอบให้แน่ใจว่าไม่เป็นโมฆะและ จากนั้นเราก็ทำ while loop เพื่ออ่านอักขระแต่ละตัวจนถึง
เราอยู่ท้ายไฟล์
ทุกครั้งที่เห็นไลน์ฟีด เราเพิ่มตัวนับนั้น
จากนั้นเราก็ปิดไฟล์ของเรา และตั้งค่าตัวชี้ของเราเป็นโมฆะ
แล้วเราก็พิมพ์ออกมา จำนวนบรรทัด
ไปข้างหน้าและสร้างสิ่งนี้
และเรามีไลน์เสริม เราต้องการให้แน่ใจว่า
เลยอยากแน่ใจว่าเราไม่ ลืมเครื่องหมายจุลภาคใน printf ของเรา
และตอนนี้เราเรียกใช้สิ่งนี้ มันจะไป อ่านจากไฟล์ที่เราสร้างขึ้นและบอกเราว่าเรามีกี่บรรทัด
มันบอกว่าจำนวนทั้งหมด ของบรรทัดคือหก
ถ้าเราเปิดไฟล์ข้อความขึ้นมา เราควร สังเกตว่ามีหกบรรทัด หนึ่ง
สอง สาม สี่ ห้า หก
มีเจ็ดจริงๆ
เราจึงต้องเพิ่มค่า สุดท้ายจนกว่าเราจะได้ eof
นี่เป็นข้อผิดพลาดเล็กน้อยที่นี่ ที่เราพูดเพราะนี่คือการป้อนบรรทัดสุดท้ายของเรา
ก่อนที่เราจะกดจุดสิ้นสุดของไฟล์
ดังนั้นคุณจึงต้องการมี นี่เป็นอีกหนึ่งแล้วเราจะเรียกใช้และมันจะใช้งานได้จริง
ในกรณีนี้ เราจะ เพิ่มสองสามบรรทัด
และในกรณีนี้เราควรจะมี หนึ่ง สอง สาม สี่ ห้า
หก เจ็ด แปด เก้าบรรทัด
เราปิดไฟล์.
เราเรียกใช้อีกครั้ง คอมไพล์ มันและเราควรจะได้เก้า
ในกรณีนี้เราได้ 9
ดังนั้นฉันจะบันทึกซอร์สโค้ดนี้
คุณสามารถดาวน์โหลดได้
นี่คือพื้นฐานของการอ่าน ข้อมูลจากไฟล์โดยใช้ fgetc
คุณยังต้องการที่จะเป็น คุ้นเคยกับ fgets
จากนั้นเพื่อจัดรูปแบบเอาต์พุต คุณสามารถใช้ fscanf เพื่ออ่านในรูปแบบเอาต์พุต
ฉันหวังว่านี่จะเป็นประโยชน์ ขอขอบคุณ.