Fail C I / O: Buat, Buka, Baca, Tulis dan Tutup Fail

Isi kandungan:

Anonim

C Pengurusan fail

Fail boleh digunakan untuk menyimpan sejumlah besar data berterusan. Seperti banyak bahasa lain, 'C' menyediakan fungsi pengurusan fail berikut,

  1. Pembuatan fail
  2. Membuka fail
  3. Membaca fail
  4. Menulis ke fail
  5. Menutup fail

Berikut adalah fungsi pengurusan fail terpenting yang terdapat di 'C,'

fungsi tujuan
fopen () Membuat fail atau membuka fail yang ada
fclose () Menutup fail
fprintf () Menulis sekumpulan data ke fail
fscanf () Membaca data blok dari fail
dapatkan () Membaca satu watak dari fail
putc () Menulis satu watak ke fail
getw () Membaca bilangan bulat dari fail
putw () Menulis bilangan bulat ke fail
fseek () Menetapkan kedudukan penunjuk fail ke lokasi yang ditentukan
kaki () Mengembalikan kedudukan semasa penunjuk fail
mundur () Menetapkan penunjuk fail pada awal fail

Dalam tutorial ini, anda akan belajar-

  • Cara Membuat Fail
  • Cara Tutup fail:
  • Menulis ke Fail
    • Fputc () Fungsi:
    • Fputs () Fungsi:
    • Fprintf () Fungsi:
  • Membaca data dari Fail
  • Fail Interaktif Baca dan Tulis dengan getc dan putc

Cara Membuat Fail

Bila-bila masa anda mahu bekerja dengan fail, langkah pertama adalah membuat fail. Fail tidak lain hanyalah ruang dalam memori di mana data disimpan.

Untuk membuat fail dalam program 'C' berikut sintaks digunakan,

FILE *fp;fp = fopen ("file_name", "mode");

Dalam sintaks di atas, fail adalah struktur data yang ditentukan dalam pustaka standard.

fopen adalah fungsi standard yang digunakan untuk membuka fail.

  • Sekiranya fail tidak ada di sistem, maka fail itu dibuat dan kemudian dibuka.
  • Sekiranya fail sudah ada di sistem, maka secara langsung dibuka dengan menggunakan fungsi ini.

fp adalah penunjuk fail yang menunjuk ke jenis fail.

Setiap kali anda membuka atau membuat fail, anda harus menentukan apa yang akan anda lakukan dengan fail tersebut. Fail dalam pengaturcaraan 'C' dapat dibuat atau dibuka untuk tujuan membaca / menulis. Mod digunakan untuk menentukan sama ada anda ingin membuka fail untuk tujuan yang diberikan di bawah ini. Berikut adalah berbagai jenis mod dalam pengaturcaraan 'C' yang dapat digunakan semasa bekerja dengan file.

Mod Fail Penerangan
r Buka fail untuk dibaca. Sekiranya fail dalam mod membaca, maka tidak ada data yang dihapus jika file sudah ada di sistem.
w Buka fail untuk menulis. Sekiranya fail dalam mod penulisan, maka fail baru akan dibuat jika fail tidak ada sama sekali. Sekiranya fail sudah ada di sistem, maka semua data di dalam file dipotong, dan dibuka untuk tujuan penulisan.
a Buka fail dalam mod lampiran. Sekiranya fail berada dalam mod lampiran, maka fail akan dibuka. Kandungan dalam fail tidak berubah.
r + terbuka untuk membaca dan menulis dari awal
w + terbuka untuk membaca dan menulis, menimpa fail
a + terbuka untuk membaca dan menulis, melampirkan ke fail

Dalam sintaks yang diberikan, nama fail dan mod ditentukan sebagai rentetan, oleh itu ia mesti selalu dilampirkan dalam tanda petik ganda.

Contoh:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Pengeluaran:

Fail dibuat dalam folder yang sama di mana anda telah menyimpan kod anda.

Anda boleh menentukan jalan di mana anda mahu membuat fail anda

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Cara Tutup fail

Seseorang harus selalu menutup fail setiap kali operasi pada fail selesai. Ini bermaksud kandungan dan pautan ke fail ditamatkan. Ini mengelakkan kerosakan fail secara tidak sengaja.

'C' menyediakan fungsi fclose untuk melakukan operasi penutupan fail. Sintaks fclose adalah seperti berikut,

fclose (file_pointer);

Contoh:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Fungsi fclose mengambil penunjuk fail sebagai argumen. Fail yang berkaitan dengan penunjuk fail kemudian ditutup dengan bantuan fungsi fclose. Ia mengembalikan 0 jika penutupan berjaya dan EOF (akhir fail) jika ada ralat telah berlaku semasa penutupan fail.

Setelah menutup fail, penunjuk fail yang sama juga dapat digunakan dengan fail lain.

Dalam pengaturcaraan 'C', fail ditutup secara automatik ketika program dihentikan. Menutup fail secara manual dengan menulis fungsi fclose adalah amalan pengaturcaraan yang baik.

Menulis ke Fail

Dalam C, semasa anda menulis ke fail, watak barisan baru \ \ 'mesti ditambahkan secara eksplisit.

Perpustakaan stdio menawarkan fungsi yang diperlukan untuk menulis ke fail:

  • fputc (char, file_pointer) : Ia menulis watak ke fail yang ditunjukkan oleh file_pointer.
  • fputs (str, file_pointer) : Ia menulis rentetan ke fail yang ditunjuk oleh file_pointer.
  • fprintf (file_pointer, str, variable_lists) : Ia mencetak rentetan ke fail yang ditunjukkan oleh file_pointer. Rentetan secara pilihan boleh merangkumi penentu format dan senarai senarai pemboleh ubah variabel.

Program di bawah menunjukkan cara melakukan penulisan ke fail:

Fputc () Fungsi:

#include int main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}

Pengeluaran:

Program di atas menulis satu watak ke dalam fail fputc_test.txt sehingga mencapai simbol baris seterusnya "\ n" yang menunjukkan bahawa ayat berjaya ditulis. Prosesnya adalah untuk mengambil setiap watak array dan menulisnya ke dalam fail.

  1. Dalam program di atas, kami telah membuat dan membuka file yang disebut fputc_test.txt dalam mod penulisan dan menyatakan rentetan kami yang akan ditulis ke dalam fail.
  2. Kami melakukan operasi watak dengan menulis karakter menggunakan loop dan memasukkan setiap watak ke dalam fail kami sehingga watak "\ n" ditemui maka fail ditutup menggunakan fungsi fclose.

Fputs () Fungsi:

#include int main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}

PENGELUARAN:

  1. Dalam program di atas, kami telah membuat dan membuka fail bernama fputs_test.txt dalam mod penulisan.
  2. Setelah kita melakukan operasi menulis menggunakan fungsi fputs () dengan menulis tiga rentetan yang berbeza
  3. Kemudian fail ditutup menggunakan fungsi fclose.

Fprintf () Fungsi:

#include int main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}

PENGELUARAN:

  1. Dalam program di atas, kami telah membuat dan membuka fail bernama fprintf_test.txt dalam mod penulisan.
  2. Setelah operasi tulis dilakukan menggunakan fungsi fprintf () dengan menulis rentetan, maka file ditutup menggunakan fungsi fclose.

Membaca data dari Fail

Terdapat tiga fungsi berbeza yang didedikasikan untuk membaca data dari fail

  • fgetc (file_pointer): Ia mengembalikan watak seterusnya dari fail yang ditunjukkan oleh penunjuk fail. Apabila akhir fail telah dicapai, EOF akan dihantar kembali.
  • fgets (buffer, n, file_pointer): Ia membaca aksara n-1 dari fail dan menyimpan rentetan dalam penyangga di mana watak NULL '\ 0' ditambahkan sebagai watak terakhir.
  • fscanf (file_pointer, conversion_specifiers, variable_adresses) : Ia digunakan untuk mengurai dan menganalisis data. Ia membaca watak-watak dari fail dan memberikan input ke senarai variabel pointer variabel menggunakan penentu penukaran. Perlu diingat bahawa seperti scanf, fscanf berhenti membaca rentetan ketika ruang atau garis baru ditemui.

Program berikut menunjukkan pembacaan dari fail fputs_test.txt masing-masing menggunakan fungsi fgets (), fscanf () dan fgetc ():

#include int main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}

Keputusan:

----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99

  1. Dalam program di atas, kami telah membuka file yang disebut "fprintf_test.txt" yang sebelumnya ditulis menggunakan fungsi fprintf (), dan itu berisi string "Learning C with Guru99". Kami membacanya menggunakan fungsi fgets () yang membaca baris demi baris di mana ukuran penyangga mesti cukup untuk menangani keseluruhan baris.
  2. Kami membuka semula fail untuk menetapkan semula fail penunjuk ke titik awal fail. Buat pelbagai pemboleh ubah rentetan untuk menangani setiap perkataan secara berasingan. Cetak pemboleh ubah untuk melihat kandungannya. Fscanf () digunakan terutamanya untuk mengekstrak dan mengurai data dari fail.
  3. Buka semula fail untuk menetapkan semula fail penunjuk ke titik di awal fail. Baca data dan cetak dari watak fail mengikut watak menggunakan fungsi getc () sehingga penyataan EOF ditemui
  4. Setelah melakukan fail operasi membaca menggunakan varian yang berbeza, kami sekali lagi menutup fail menggunakan fungsi fclose.

Fail Interaktif Baca dan Tulis dengan getc dan putc

Ini adalah operasi fail paling mudah. Getc bermaksud watak get, dan putc bermaksud watak put. Kedua fungsi ini digunakan untuk menangani satu watak sahaja dalam satu masa.

Program berikut menunjukkan fungsi pengendalian fail dalam pengaturcaraan 'C':

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}

Pengeluaran:

  1. Dalam program di atas, kami telah membuat dan membuka fail bernama demo dalam mod penulisan.
  2. Setelah operasi tulis dijalankan, maka fail ditutup menggunakan fungsi fclose.
  3. Kami sekali lagi membuka fail yang kini mengandungi data dalam mod membaca. Gelung sementara akan dilaksanakan sehingga eof dijumpai. Setelah akhir fail dijumpai operasi akan dihentikan dan data akan dipaparkan menggunakan fungsi printf.
  4. Setelah melakukan operasi membaca fail ditutup semula menggunakan fungsi fclose.

Ringkasan

  • Fail adalah ruang dalam memori di mana data disimpan.
  • Pengaturcaraan 'C' menyediakan pelbagai fungsi untuk menangani fail.
  • Mekanisme manipulasi dengan fail disebut sebagai pengurusan fail.
  • Fail mesti dibuka sebelum melakukan operasi di atasnya.
  • Fail boleh dibuka dalam mod baca, tulis atau tambahkan.
  • Fungsi Getc dan putc digunakan untuk membaca dan menulis watak tunggal.
  • Fungsi fscanf () membenarkan membaca dan mengurai data dari fail
  • Kita dapat membaca (menggunakan fungsi getc ) keseluruhan fail dengan melingkar untuk menutup semua fail sehingga EOF ditemui
  • Kita boleh menulis ke fail setelah membuat namanya, dengan menggunakan fungsi fprintf () dan ia mesti mempunyai watak baris baru di akhir teks rentetan.