วิธีอ่านไฟล์ข้อความและพิมพ์สตริงทั้งหมดใน C

Withi Xan Fil Khxkhwam Laea Phimph String Thanghmd Ni C



อ่านไฟล์ข้อความและพิมพ์ทั้งหมด สตริง เป็นงานหลักที่โปรแกรมเมอร์ C ทำบ่อยๆ สิ่งสำคัญคือต้องเข้าใจพื้นฐานของ การอ่าน ไฟล์ข้อความ ใน C และวิธีการ พิมพ์ เดอะ สตริง จากมันก่อนที่จะพยายามงานนี้

การอ่านไฟล์ข้อความและการพิมพ์สตริงทั้งหมดจะแสดงให้เห็นโดยใช้การเขียนโปรแกรม C ในบทความนี้







อ่านไฟล์ข้อความและพิมพ์สตริงทั้งหมดใน C

มีสี่ฟังก์ชั่นในการอ่านไฟล์ข้อความและพิมพ์สตริงทั้งหมดใน C ซึ่งมีดังนี้:



วิธีที่ 1: ฟังก์ชัน fread()

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



เดอะ ฟรีด() เมธอดในภาษาซีมีไวยากรณ์





size_t อ่าน ( เป็นโมฆะ * array_buffer, size_t ขนาด , size_t นับ, FILE * file_stream )

ลองดูพารามิเตอร์ของฟังก์ชัน fread() ในรายละเอียดเพิ่มเติม:



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

ขนาด: อาร์กิวเมนต์นี้แนะนำฟังก์ชันจำนวนไบต์ของข้อมูลที่จะอ่านจากสตรีมอินพุตสำหรับแต่ละบล็อก

นับ: กำหนดจำนวนอักขระที่จะอ่านจากสตรีมอินพุตข้อมูล

file_stream: เป็นตัวชี้ที่อ้างถึงวัตถุ FILE

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

ในตัวอย่างนี้ เรากำหนดบัฟเฟอร์อาร์เรย์อักขระที่มีขนาด 100 ก่อนใช้งาน เปิด () เพื่อเปิดไฟล์ข้อความ C_File.txt ในโหมดอ่าน เมื่อใช้คำสั่ง if เราจะตรวจสอบว่าเปิดไฟล์ได้สำเร็จหรือไม่ ขั้นตอนต่อไปนี้คือการอ่านถึง 100 ไบต์ของข้อมูลจากไฟล์โดยใช้ ฟรีด() . บัฟเฟอร์เป้าหมาย ในกรณีนี้คืออาร์เรย์บัฟเฟอร์ เป็นพารามิเตอร์ตัวแรกที่ ฟรีด(). อาร์กิวเมนต์ที่สอง ขนาดของ กำหนดขนาดของแต่ละรายการที่จะอ่านในขณะที่เรากำลังอ่านเป็นตัวอักษร . อินพุตที่สามคือปริมาณที่จะอ่าน ซึ่งในกรณีนี้ก็คือ 100 . เดอะ ตัวชี้ไฟล์ เป็นพารามิเตอร์ที่สี่ สุดท้ายเราใช้ พิมพ์f() เพื่อพิมพ์ข้อมูลที่อ่านจากไฟล์และ fclose() เพื่อปิดไฟล์ การรันโปรแกรมนี้จะได้ผลลัพธ์เช่นนี้หาก C_File.txt :

เอาต์พุต

วิธีที่ 2: ฟังก์ชัน fgets()

ภาษาซี fgets() เมธอดอ่านอักขระ n ตัวจากสตรีมไปยังสตริง str เดอะ fgets() เมธอดยังคงอ่านอักขระจากสตรีมจนถึง (n-1) อ่านอักขระแล้ว ตรวจพบอักขระขึ้นบรรทัดใหม่ หรือถึงจุดสิ้นสุดของไฟล์ (EOF) แล้ว

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

ตัวอย่างนี้ใช้ เปิด () เพื่อเปิดไฟล์ข้อความที่เรียกว่า C_File.txt ในโหมดอ่านหลังจากประกาศบัฟเฟอร์อาร์เรย์อักขระขนาดแรก 100 . เมื่อใช้คำสั่ง if เราจะตรวจสอบว่าเปิดไฟล์ได้สำเร็จหรือไม่ หลังจากนั้นเราใช้การวนซ้ำแบบ while และ fgets() เพื่ออ่านบรรทัดข้อความจากไฟล์โดยใช้ตัวชี้ไฟล์ โดยใช้ พิมพ์f() ภายในลูป เราพิมพ์ข้อความแต่ละบรรทัด การรันโปรแกรมนี้จะให้ผลลัพธ์:

เอาต์พุต

วิธีที่ 3: ฟังก์ชัน fscanf()

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

#รวม
int หลัก ( ) {
ไฟล์ * ไฟล์ ;
int num1, num2, num3;
ไฟล์ = เปิด ( 'C_File.txt' , 'ร' ) ;
ถ้า ( ไฟล์ == โมฆะ ) {
พิมพ์ฉ ( 'ข้อผิดพลาด: ไม่สามารถเปิดไฟล์ \n ' ) ;
กลับ 1 ;
}
fscanf ( ไฟล์ , '%d %d %d' , & หมายเลข 1, & จำนวน 2, & หมายเลข 3 ) ;
พิมพ์ฉ ( 'ตัวเลขที่อ่านจากไฟล์คือ: %d, %d, %d \n ' , num1, num2, num3 ) ;
ปิด ( ไฟล์ ) ;
กลับ 0 ;
}

ตัวอย่างนี้เปิดไฟล์ C_File.txt ในโหมดอ่านโดยประกาศตัวแปร int 3 ตัวก่อน ได้แก่ num1, num2 และ num3 เมื่อใช้คำสั่ง if เราจะตรวจสอบว่าเปิดไฟล์ได้สำเร็จหรือไม่ ขั้นตอนต่อไปคือการอ่านตัวเลขสามตัวจากไฟล์โดยใช้ fscanf() และ %d ตัวระบุรูปแบบ ตัวแปร num1, num2 และ num3 เป็นที่เก็บค่าต่างๆ สุดท้ายเราใช้ พิมพ์f() เพื่อส่งออกค่าของตัวแปรเหล่านี้และ fclose() เพื่อปิดไฟล์ การเรียกใช้โปรแกรมนี้จะทำให้ได้ผลลัพธ์ที่แสดงด้านล่าง:

เอาต์พุต

วิธีที่ 4: ฟังก์ชัน fgetc()

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

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

ในกรณีนี้ เราใช้ เปิด () คำสั่งเปิดไฟล์ข้อความ C_File.txt ในโหมดอ่าน เมื่อใช้คำสั่ง if เราจะตรวจสอบว่าเปิดไฟล์ได้สำเร็จหรือไม่ หลังจากนั้นเราใช้การวนซ้ำแบบ while และ fgetc() เพื่ออ่านอักขระจากไฟล์ อักขระที่ได้รับจากไฟล์ถูกกำหนดให้กับตัวแปร ภายในวงก่อนพิมพ์โดยใช้ พิมพ์f () วนซ้ำไปเรื่อย ๆ จนถึง อฟ ค่าคงที่ (จุดสิ้นสุดของไฟล์) ตรวจพบการสิ้นสุดของไฟล์ การรันโปรแกรมนี้จะได้ผลลัพธ์ดังต่อไปนี้ ถ้า C_File.txt มีคำว่า 'ลินุกซ์'.

เอาต์พุต

บทสรุป

โดยใช้ขั้นตอนที่สรุปไว้ข้างต้น C สามารถใช้เพื่อ อ่านไฟล์ข้อความ และ พิมพ์สตริงทั้งหมด มันมี มันเริ่มต้นด้วยการใช้ เปิด () เรียกระบบเพื่อเปิดไฟล์ตามด้วยการใช้งาน ของ fscanf(), fread(), fgets(), fgetc() เพื่ออ่านข้อมูล หลังจากนั้นไฟล์จะถูกปิดโดยใช้ fclose() และใช้ for loop เพื่อพิมพ์สตริง ด้วยการใช้เทคนิคเหล่านี้ C สามารถใช้เพื่อช่วยอ่านและพิมพ์ข้อมูลได้อย่างมีประสิทธิภาพ