วิธีอ่านไฟล์ข้อความใน C

Withi Xan Fil Khxkhwam Ni C



ไฟล์ข้อความ เป็นหนึ่งในประเภทไฟล์ที่ใช้กันอย่างแพร่หลายในคอมพิวเตอร์ อาจใช้กับงานที่หลากหลาย เช่น การจัดเก็บเอกสารข้อความหรือซอร์สโค้ดของโปรแกรม จะถูกบันทึกไว้ในระบบด้วย .txt ส่วนขยาย. ขณะทำงานกับโค้ด C คุณอาจต้องอ่านไฟล์ข้อความซึ่งเป็นส่วนหนึ่งของโปรเจ็กต์ของคุณหรือขอความช่วยเหลือจากไฟล์ข้อความ แทนที่จะกลับไปที่ตำแหน่งเพื่ออ่านไฟล์ข้อความ จะเป็นการดีกว่าที่จะอ่านภายในโค้ด

บทความนี้กล่าวถึงวิธีที่มีประโยชน์ในการอ่านไฟล์ข้อความในภาษาโปรแกรม C

อ่านไฟล์ข้อความใน C

มีสี่วิธีในการอ่านไฟล์ข้อความในภาษา C ซึ่งได้แก่







วิธีที่ 1: การใช้ฟังก์ชัน fscanf() เพื่ออ่านไฟล์ข้อความใน C

เดอะ fscanf() ฟังก์ชันเป็นฟังก์ชันไลบรารีมาตรฐานที่รับอาร์กิวเมนต์อาร์เรย์และแปลงเป็นค่าที่โปรแกรมของคุณสามารถใช้ได้ ค้นหาสตริงรูปแบบภายในไฟล์และส่งคืนสตริงรูปแบบเมื่ออ่านจากไฟล์ สตริงรูปแบบต้องอยู่ในเครื่องหมายคำพูด (“ ”) เพื่อไม่ให้โปรแกรมของคุณตีความว่าเป็นส่วนหนึ่งของไวยากรณ์ของมันเอง



เดอะ fscanf() ฟังก์ชันอ่านข้อมูลในตำแหน่งที่จัดเตรียมโดยรายการในรายการอาร์กิวเมนต์ รายการอาร์กิวเมนต์ทั้งหมดต้องชี้ไปที่ตัวแปรที่มีประเภทตรงกับตัวระบุประเภทในรูปแบบสตริง



มันให้ EOF (จุดสิ้นสุดของไฟล์) หรือจำนวนของตัวแปรที่มีค่าที่กำหนดให้กับพวกมัน





มาดูตัวอย่างการอ่านไฟล์ข้อความโดยใช้ fscanf() การทำงาน:

#รวม
int หลัก ( )
{
ไฟล์ * ptr = เปิด ( 'file_name.txt' , 'ร' ) ;
ถ้า ( ptr == โมฆะ ) {
พิมพ์ฉ ( 'ไม่มีไฟล์ดังกล่าวอยู่' ) ;
กลับ 0 ;
}
ถ่านบัฟ [ 100 ] ;
ในขณะที่ ( fscanf ( ptr, '%s' , หนัง ) == 1 )
พิมพ์ฉ ( '%s \n ' , หนัง ) ;
กลับ 0 ;
}

ในรหัสนี้ เปิด () ฟังก์ชันใช้เปิดไฟล์ภายใต้ตัวแปรพอยน์เตอร์ ptr fscanf() จากนั้นใช้ฟังก์ชันเพื่ออ่านไฟล์แล้วพิมพ์เนื้อหา



เอาต์พุต

วิธีที่ 2: การใช้ฟังก์ชัน fread() เพื่ออ่านไฟล์ข้อความใน C

ข้อมูลจากไฟล์ถูกอ่านโดยไฟล์ ฟรีด() วิธีการและเก็บไว้ในบัฟเฟอร์ มากถึงจำนวนรายการที่จะอ่านในบัฟเฟอร์อาร์เรย์โดย ฟรีด() ฟังก์ชันจากสตรีมอินพุตซึ่งระบุเป็นอาร์กิวเมนต์ของฟังก์ชัน

เมื่ออ่านจำนวนรายการทั้งหมดสำเร็จ วัตถุ size_t จะถูกส่งกลับ หากค่านี้แตกต่างจากค่าที่ระบุโดยโปรแกรม แสดงว่ามีข้อผิดพลาดเกิดขึ้นหรือถึงจุดสิ้นสุดของไฟล์แล้ว

#รวม
int หลัก ( )
{
บัฟเฟอร์ถ่าน [ 33 ] ;
ไฟล์ * ลำธาร;
กระแส = เปิด ( 'file_name.txt' , 'ร' ) ;
จำนวน int = ความกลัว ( & บัฟเฟอร์, ขนาดของ ( ถ่าน ) , 33 , ลำธาร ) ;
ปิด ( ลำธาร ) ;
พิมพ์ฉ ( 'ข้อมูลที่อ่านจากไฟล์: %s \n ' , กันชน ) ;
พิมพ์ฉ ( 'จำนวนองค์ประกอบที่อ่าน: %d' , นับ ) ;
กลับ 0 ;
}

ในรหัสนี้ เปิด () ฟังก์ชั่นที่ใช้ในการเปิดไฟล์จากนั้นไฟล์ ฟรีด() จากนั้นใช้ฟังก์ชันเพื่ออ่านไฟล์แล้วพิมพ์เนื้อหา 33 แสดงจำนวนอักขระที่จะอ่านจากไฟล์

เอาต์พุต

วิธีที่ 3: การใช้ฟังก์ชัน fgets() เพื่ออ่านไฟล์ข้อความใน C

กับ fgets() ฟังก์ชัน บรรทัดถูกอ่านจากสตรีมที่ระบุและเก็บไว้ในตัวแปรสตริงที่สอดคล้องกัน เมื่ออ่านอักขระ (n-1) อักขระขึ้นบรรทัดใหม่ หรือจุดสิ้นสุดของไฟล์ หรืออะไรก็ตามที่เกิดก่อน โปรแกรมจะสิ้นสุดลง หากฟังก์ชันสำเร็จ สตริงเดียวกันจะถูกส่งกลับ เนื้อหาของสตริงจะยังคงอยู่และตัวชี้ null จะเกิดขึ้นหากฟังก์ชันถึง End-of-File โดยไม่มีอักขระอ่าน

ในกรณีที่เกิดความล้มเหลว จะมีตัวชี้ว่าง

#รวม
int หลัก ( ) {
ไฟล์ * เอฟพี;
ถ่าน str [ 60 ] ;
เอฟพี = โฟเพน ( 'ไฟล์.txt' , 'ร' ) ;
ถ้า ( fp == โมฆะ ) {
กลัว ( 'ข้อผิดพลาดในการเปิดไฟล์' ) ;
กลับ ( - 1 ) ;
}
ถ้า ( เฟทส์ ( สตริง 100 , ฉป ) ! =โมฆะ ) {
ทำให้ ( สตริง ) ;
}
ปิด ( ฉพ ) ;
กลับ ( 0 ) ;
}

ในรหัสนี้ ไฟล์. txt ไฟล์ถูกเปิดโดย เปิด () หน้าที่แล้ว fgets() จากนั้นใช้ฟังก์ชันเพื่ออ่านสตริงในไฟล์แล้วพิมพ์ออกมา 100 แสดงจำนวนสตริงที่จะอ่าน

เอาต์พุต

วิธีที่ 4: การใช้ฟังก์ชัน fgetc() เพื่ออ่านไฟล์ข้อความใน C

เดอะ เอฟจีเทค() ฟังก์ชั่นใช้ในการอ่านตัวอักษรทีละตัว จากนั้นฟังก์ชันจะส่งคืนรหัส ASCII ของอักขระที่อ่าน จะส่งกลับอักขระที่มีอยู่ในตำแหน่งที่ระบุของตัวชี้ไฟล์ จากนั้นตัวชี้ไฟล์จะเลื่อนไปยังอักขระถัดไป หากมีข้อผิดพลาดหรือตัวชี้ถึงจุดสิ้นสุดของไฟล์ ฟังก์ชันนี้จะคืนค่า EOF (จุดสิ้นสุดของไฟล์)

#รวม
int หลัก ( )
{
ไฟล์ * เอฟพี = โฟเพน ( 'ไฟล์.txt' , 'ร' ) ;
ถ้า ( fp == โมฆะ )
กลับ 0 ;
ทำ {
ถ่าน c = fgetc ( ฉพ ) ;
ถ้า ( เฟอฟ ( ฉพ ) )
หยุดพัก ;
พิมพ์ฉ ( '%ค' , ค ) ;
} ในขณะที่ ( 1 ) ;
ปิด ( ฉพ ) ;
กลับ ( 0 ) ;
}

ไฟล์. txt ” ไฟล์ถูกเปิดโดยไฟล์ เปิด () ฟังก์ชันในรหัสนี้ภายใต้ตัวแปรตัวชี้ fp อักขระของไฟล์จะถูกอ่านโดยใช้ fgetc() วิธีการพิมพ์ตัวอักษรที่อ่าน

เอาต์พุต

บทสรุป

การอ่านไฟล์เป็นสิ่งจำเป็นสำหรับผู้ใช้คอมพิวเตอร์ทุกคน และโดยเฉพาะอย่างยิ่งสำหรับนักพัฒนา สิ่งสำคัญคือเขาสามารถเข้าถึงไฟล์โดยใช้รหัสของเขา ดังนั้นจึงได้กล่าวถึง 4 วิธีข้างต้นในบทความเพื่ออ่านก ไฟล์ข้อความ โดยใช้ภาษาซี fscanf() และ ฟรีด() ใช้ในการอ่านไฟล์ในทำนองเดียวกัน ยกเว้นว่า ฟรีด() ช่วยให้เราสามารถระบุจำนวนตัวอักษรที่ผู้ใช้ต้องการอ่านได้ในขณะที่ fgets() ใช้ในการอ่านไฟล์ทีละบรรทัด และ fgetc() ใช้ในการอ่านไฟล์ทีละตัวอักษร