C ++ fseek () - Perpustakaan Standard C ++

Fungsi fseek () dalam C ++ menetapkan penunjuk kedudukan fail untuk aliran fail yang diberikan.

Fungsi fseek () ditentukan dalam fail tajuk.

prototaip fseek ()

 int fseek (aliran FILE *, ofset panjang, asal int);

Sekiranya fail dibuka dalam mod binari, kedudukan baru penunjuk fail diimbangi tepat oleh bait dari asalnya.

Sekiranya fail dibuka dalam mod teks, nilai yang disokong untuk mengimbangi adalah:

  • Nol: Ia berfungsi dengan nilai asal iaitu SEEK_SET, SEEK_CUR dan SEEK_END.
  • Nilai dikembalikan dengan panggilan ke ftell (stream): Nilai hanya berfungsi dengan asal SEEK_SET.

Sekiranya aliran berorientasikan luas, sekatan aliran teks dan binari diterapkan iaitu hasil ftell dibenarkan dengan SEEK_SET dan pengimbangan sifar dibenarkan dari SEEK_SET dan SEEK_CUR, tetapi tidak SEEK_END.

Fungsi fseek juga menghilangkan kesan ungetc dan membersihkan status akhir fail, jika berkenaan.

Sekiranya ralat membaca atau menulis berlaku, ferror ditetapkan dan kedudukan fail tidak terjejas.

fseek () Parameter

  • stream: Aliran fail untuk diubah suai.
  • mengimbangi: Bilangan watak yang akan diganti dari asal.
  • asal: Kedudukan yang digunakan sebagai rujukan untuk menambah ke ofset. Nilai boleh mempunyai nilai berikut:
fseek () nilai asal
Nilai Penerangan
SEEK_SET Permulaan fail
SEEK_CUR Kedudukan penunjuk fail semasa
SEEK_END Akhir fail

fseek () Nilai pulangan

  • Pada kejayaan, fungsi fseek () mengembalikan sifar, bukan sifar sebaliknya.

Contoh: Bagaimana fungsi fseek () berfungsi?

 #include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )

Semasa anda menjalankan program, outputnya adalah:

 Nama: Erica Umur: 25 Bandar: Berlin

Artikel menarik...