Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C - File I/O

Bab terakhir menjelaskan perangkat input dan output standar yang ditangani oleh bahasa pemrograman C. Bab ini membahas bagaimana programmer C dapat membuat, membuka, menutup file teks atau biner untuk penyimpanan data mereka.

File mewakili urutan byte, terlepas dari itu menjadi file teks atau file biner. Bahasa pemrograman C menyediakan akses pada fungsi tingkat tinggi serta panggilan tingkat rendah (tingkat OS) untuk menangani file di perangkat penyimpanan Anda. Bab ini akan membawa Anda melalui panggilan penting untuk manajemen file.

Membuka File

Anda dapat menggunakan fopen() berfungsi untuk membuat file baru atau membuka file yang sudah ada. Panggilan ini akan menginisialisasi objek dengan tipe FILE , yang berisi semua informasi yang diperlukan untuk mengontrol aliran. Prototipe pemanggilan fungsi ini adalah sebagai berikut

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

Di sini, nama file adalah literal string, yang akan Anda gunakan untuk menamai file Anda, dan mengakses mode dapat memiliki salah satu dari nilai berikut

No.Sr. Mode &Deskripsi
1

r

Membuka file teks yang ada untuk tujuan membaca.

2

w

Membuka file teks untuk menulis. Jika tidak ada, maka file baru dibuat. Di sini program Anda akan mulai menulis konten dari awal file.

3

a

Membuka file teks untuk ditulis dalam mode penambahan. Jika tidak ada, maka file baru dibuat. Di sini program Anda akan mulai menambahkan konten ke konten file yang ada.

4

r+

Membuka file teks untuk membaca dan menulis.

5

w+

Membuka file teks untuk membaca dan menulis. Ini pertama-tama memotong file menjadi nol panjang jika ada, jika tidak membuat file jika tidak ada.

6

a+

Membuka file teks untuk membaca dan menulis. Itu membuat file jika tidak ada. Pembacaan akan dimulai dari awal tetapi tulisan hanya dapat ditambahkan.

Jika Anda akan menangani file biner, maka Anda akan menggunakan mode akses berikut alih-alih yang disebutkan di atas −

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

Menutup File

Untuk menutup file, gunakan fungsi fclose(). Prototipe dari fungsi ini adalah

int fclose( FILE *fp );

fclose(-) fungsi mengembalikan nol pada keberhasilan, atau EOF jika ada kesalahan dalam menutup file. Fungsi ini sebenarnya mem-flush semua data yang masih tertunda di buffer ke file, menutup file, dan melepaskan memori apa pun yang digunakan untuk file tersebut. EOF adalah konstanta yang didefinisikan dalam file header stdio.h .

Ada berbagai fungsi yang disediakan oleh library standar C untuk membaca dan menulis file, karakter demi karakter, atau dalam bentuk string dengan panjang tetap.

Menulis File

Berikut ini adalah fungsi paling sederhana untuk menulis karakter individual ke aliran −

int fputc( int c, FILE *fp );

Fungsi fputc() menulis nilai karakter argumen c ke aliran keluaran yang dirujuk oleh fp. Ini mengembalikan karakter tertulis yang ditulis pada kesuksesan jika tidak EOF jika ada kesalahan. Anda dapat menggunakan fungsi berikut untuk menulis string yang diakhiri null ke aliran −

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

Fungsi fputs() menulis string s ke aliran keluaran yang dirujuk oleh fp. Ini mengembalikan nilai non-negatif pada keberhasilan, jika tidak EOF dikembalikan jika terjadi kesalahan. Anda dapat menggunakan int fprintf(FILE *fp,const char *format, ...) berfungsi juga untuk menulis string ke dalam file. Coba contoh berikut.

Pastikan Anda memiliki /tmp direktori tersedia. Jika tidak, maka sebelum melanjutkan, Anda harus membuat direktori ini di mesin Anda.

#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);
}

Ketika kode di atas dikompilasi dan dieksekusi, itu membuat file baru test.txt di /tmp direktori dan menulis dua baris menggunakan dua fungsi yang berbeda. Mari kita baca file ini di bagian selanjutnya.

Membaca File

Diberikan di bawah ini adalah fungsi paling sederhana untuk membaca satu karakter dari file −

int fgetc( FILE * fp );

fgetc() fungsi membaca karakter dari file input yang dirujuk oleh fp. Nilai yang dikembalikan adalah karakter yang dibaca, atau jika ada kesalahan, ia mengembalikan EOF . Fungsi berikut memungkinkan untuk membaca string dari aliran −

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

Fungsi fgets() membaca hingga n-1 karakter dari aliran input yang dirujuk oleh fp. Ini menyalin string baca ke dalam buffer buf , menambahkan null karakter untuk mengakhiri string.

Jika fungsi ini menemukan karakter baris baru '\n' atau akhir file EOF sebelum mereka membaca jumlah karakter maksimum, maka fungsi ini hanya mengembalikan karakter yang dibaca hingga titik tersebut termasuk karakter baris baru. Anda juga dapat menggunakan int fscanf(FILE *fp, const char *format, ...) berfungsi untuk membaca string dari file, tetapi berhenti membaca setelah menemukan karakter spasi pertama.

#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);

}

Ketika kode di atas dikompilasi dan dieksekusi, ia membaca file yang dibuat di bagian sebelumnya dan menghasilkan hasil berikut

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

3: This is testing for fputs...

Mari kita lihat sedikit lebih detail tentang apa yang terjadi di sini. Pertama, fscanf() baca saja Ini karena setelah itu menemukan spasi, panggilan kedua adalah untuk fgets() yang membaca baris yang tersisa sampai menemukan akhir baris. Akhirnya, panggilan terakhir fgets() membaca baris kedua sepenuhnya.

Fungsi I/O Biner

Ada dua fungsi yang dapat digunakan untuk input dan output biner −

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);

Kedua fungsi ini harus digunakan untuk membaca atau menulis blok memori - biasanya array atau struktur.


Bahasa C

  1. C Masukan Keluaran (I/O)
  2. C Penanganan Berkas
  3. File Python I/O
  4. Axiomtek:sistem kaya fitur untuk aplikasi machine vision
  5. acceed:Modul I/O untuk komunikasi data yang dapat diskalakan
  6. C - Fungsi
  7. C - File Header
  8. Apa itu Kartu I/O dan Cara Kerjanya
  9. MATLAB - Keluaran Data
  10. C# - File I/O