Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

fseek() vs rewind() ใน C


fseek()

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

นี่คือไวยากรณ์ของ fseek() ในภาษา C

int fseek(FILE *stream, long int offset, int whence)

นี่คือพารามิเตอร์ที่ใช้ใน fseek(),

  • สตรีม − นี่คือตัวชี้เพื่อระบุสตรีม

  • ออฟเซ็ต − นี่คือจำนวนไบต์จากตำแหน่ง

  • ที่ไหน − นี่คือตำแหน่งที่เพิ่มออฟเซ็ต

โดยที่ถูกกำหนดโดยค่าคงที่ตัวใดตัวหนึ่งต่อไปนี้

  • SEEK_END − สิ้นสุดไฟล์

  • SEEK_SET − เริ่มต้นไฟล์

  • SEEK_CUR - ตำแหน่งปัจจุบันของตัวชี้ไฟล์

นี่คือตัวอย่าง fseek() ในภาษา C -

สมมติว่าเรามีไฟล์ "demo.txt" ที่มีเนื้อหาดังต่อไปนี้ -

This is demo text!
This is demo text!
This is demo text!
This is demo text!

ตอนนี้ให้เราดูรหัส

ตัวอย่าง

#include<stdio.h>
void main() {
   FILE *f;
   f = fopen("demo.txt", "r");
   if(f == NULL) {
      printf("\n Can't open file or file doesn't exist.");
      exit(0);
   }
   fseek(f, 0, SEEK_END);
   printf("The size of file : %ld bytes", ftell(f));
   getch();
}

ผลลัพธ์

The size of file : 78 bytes

ในโปรแกรมข้างต้น ไฟล์ “demo.txt” จะเปิดขึ้นโดยใช้ฟังก์ชัน fopen() และฟังก์ชัน fseek() ใช้เพื่อย้ายตัวชี้ไปยังจุดสิ้นสุดของไฟล์

f = fopen("demo.txt", "r");
if(f == NULL) {
   printf("\n Can't open file or file doesn't exist.");
   exit(0);
}
fseek(f, 0, SEEK_END);

ย้อนกลับ()

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

นี่คือไวยากรณ์ของ rewind() ในภาษา C

void rewind(FILE *stream);

นี่คือตัวอย่าง rewind() ในภาษา C

สมมติว่าเรามีไฟล์ "new.txt" ที่มีเนื้อหาดังต่อไปนี้ -

This is demo!
This is demo!

ทีนี้มาดูตัวอย่างกัน

ตัวอย่าง

#include<stdio.h>
void main() {
   FILE *f;
   f = fopen("new.txt", "r");
   if(f == NULL) {
      printf("\n Can't open file or file doesn't exist.");
      exit(0);
   }
   rewind(f);
   fseek(f, 0, SEEK_END);
   printf("The size of file : %ld bytes", ftell(f));
   getch();
}

ผลลัพธ์

The size of file : 28 bytes

ในโปรแกรมข้างต้น ไฟล์ถูกเปิดโดยใช้ fopen() และถ้าตัวแปร pointer เป็นค่าว่าง จะแสดงไฟล์ can't open file หรือไฟล์ไม่มีอยู่จริง ฟังก์ชัน rewind() กำลังย้ายตัวชี้ไปที่จุดเริ่มต้นของไฟล์

f = fopen("new.txt", "r");
if(f == NULL) {
   printf("\n Can't open file or file doesn't exist.");
   exit(0);
}
rewind(f);