Latest web development tutorials
×

C หลักสูตร

C กวดวิชาภาษา C แนะนำโดยย่อ C การตั้งค่าสภาพแวดล้อม C โครงสร้างหลักสูตร C ไวยากรณ์พื้นฐาน C ชนิดข้อมูล C ตัวแปร C คงที่ C ประเภทการจัดเก็บ C ผู้ประกอบการ C ผู้พิพากษา C การไหลเวียน C ฟังก์ชัน C การกำหนดขอบเขตกฎระเบียบ C แถว C ชี้ C เชือก C โครงสร้าง C สหภาพ C ฟิลด์บิต C typedef C อินพุตและเอาต์พุต C การอ่านออกเขียนเอกสาร C preprocessor C ส่วนหัว C ปลดเปลื้อง C จัดการข้อผิดพลาด C recursion C พารามิเตอร์ตัวแปร C จัดการหน่วยความจำ C บรรทัดคำสั่ง C คลาสสิก 100 ราย

C ห้องสมุดมาตรฐาน

C ห้องสมุดมาตรฐาน - คู่มืออ้างอิง C ห้องสมุดมาตรฐาน - <assert.h> C ห้องสมุดมาตรฐาน - <ctype.h> C ห้องสมุดมาตรฐาน - <errno.h> C ห้องสมุดมาตรฐาน - <float.h> C ห้องสมุดมาตรฐาน - <limits.h> C ห้องสมุดมาตรฐาน - <locale.h> C ห้องสมุดมาตรฐาน - <math.h> C ห้องสมุดมาตรฐาน - <setjmp.h> C ห้องสมุดมาตรฐาน - <signal.h> C ห้องสมุดมาตรฐาน - <stdarg.h> C ห้องสมุดมาตรฐาน - <stddef.h> C ห้องสมุดมาตรฐาน - <stdio.h> C ห้องสมุดมาตรฐาน - <stdlib.h> C ห้องสมุดมาตรฐาน - <string.h> C ห้องสมุดมาตรฐาน - <time.h>

C เอกสารความรู้

บทก่อนหน้านี้เราอธิบายเข้าและส่งออกอุปกรณ์การประมวลผลภาษา C มาตรฐาน ในบทนี้เราจะมาแนะนำโปรแกรมเมอร์ C วิธีการสร้างเปิดปิดข้อความหรือไฟล์ไบนารี

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

เปิดแฟ้ม

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

FILE *fopen( const char * filename, const char * mode );

นี่ filename เป็นสตริงที่ใช้ในการตั้งชื่อไฟล์โหมดการเข้าถึงค่าโหมดสามารถเป็นหนึ่งในค่าต่อไปนี้:

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

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

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

ปิดแฟ้ม

;

ปิดแฟ้มให้ใช้ fclose () ฟังก์ชัน ต้นแบบฟังก์ชั่นดังต่อไปนี้:

 int fclose( FILE *fp );

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

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

เขียนไปยังแฟ้ม

นี่คือตัวละครที่เขียนในสตรีมของฟังก์ชั่นที่เรียบง่ายที่สุด:

int fputc( int c, FILE *fp );

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

int fputs( const char *s, FILE *fp );

fputs () ฟังก์ชันเขียน sสตริง FP จุดกระแสข้อมูลขาออก ถ้าเขียนจะประสบความสำเร็จก็จะกลับค่าที่ไม่ใช่เชิงลบหากมีข้อผิดพลาดเกิดขึ้นก็จะส่งกลับEOFนอกจากนี้คุณยังสามารถใช้int fprintf (File * FP, const char * รูปแบบ, ... ) ฟังก์ชั่นการเขียนสตริงจะถูกเขียนไปยังแฟ้มลองตัวอย่างต่อไปนี้:

หมายเหตุ: ให้แน่ใจว่าคุณได้มีไดเรกทอรี / tmpถ้าไดเรกทอรีนี้ไม่ได้อยู่ที่คุณจะต้องสร้างไดเรกทอรีบนคอมพิวเตอร์ของคุณ

#include <stdio.h>

main()
{
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

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

อ่านไฟล์

นี่คือฟังก์ชั่นที่ง่ายต่อการอ่านตัวอักษรตัวเดียวจากไฟล์:

int fgetc( FILE * fp );

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

char *fgets( char *buf, int n, FILE *fp );

fgets () ฟังก์ชันอ่าน N จากกระแสอินพุทที่ชี้ไปตาม FP - ตัวละครหนึ่งมันจะอ่านสตริงคัดลอกลงในbuf บัฟเฟอร์และในที่สุดก็ผนวกอักขระ nullจะยุติสตริง

หากฟังก์ชั่นก่อนที่จะอ่านอักขระตัวสุดท้ายที่พบอักขระ newline '\ n' ในตอนท้ายของไฟล์หรือ EOF เพียงเพื่อกลับไปอ่านตัวอักษรรวมทั้งการขึ้นบรรทัดใหม่ นอกจากนี้คุณยังสามารถใช้int fscanf (File * FP, const char * รูปแบบ, ... ) ฟังก์ชั่นในการอ่านสตริงจากแฟ้ม แต่ในใบหน้าของตัวอักษรช่องว่างแรกก็จะหยุดอ่าน

#include <stdio.h>

main()
{
   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);

}

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

1 : This
2: is testing for fprintf...

3: This is testing for fputs...

แรก fscanf () วิธีการอ่านนี้เพราะมันพบช่องว่างในด้านหลังถัดไปโทรfgets () เพื่ออ่านส่วนที่เหลือจนกว่าจะสิ้นสุดของบรรทัดสุดท้ายโทรfgets () อ่านในสิ่งทั้งปวงบรรทัดที่สอง

I / O ไบนารีฟังก์ชั่น

ต่อไปนี้สองฟังก์ชั่นสำหรับปัจจัยการผลิตไบนารีและเอาท์พุท:

size_t fread(void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);
              
size_t fwrite(const void *ptr, size_t size_of_elements, 
             size_t number_of_elements, FILE *a_file);

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