Latest web development tutorials

C keaksaraan dokumen

bab sebelumnya kita menjelaskan input dan output perangkat pengolahan bahasa C standar. Dalam bab ini kita akan memperkenalkan C programmer cara membuat, membuka, menutup, teks atau file biner.

Sebuah file, apakah itu teks atau data biner, adalah wakil dari serangkaian byte. C fungsi bahasa tidak hanya menyediakan akses ke tingkat atas, tetapi juga menyediakan mendasari (OS) dipanggil untuk memproses file yang tersimpan pada perangkat. Bab ini akan menjelaskan pentingnya panggilan file manager.

Buka file

Anda dapat menggunakan fungsifopen () untuk membuat dokumen baru atau membuka file yang sudah ada, panggilan akan menginisialisasi sebuah objek dari tipe FILE,jenisFILEberisi semua informasi yang diperlukan untuk mengontrol aliran. Berikut adalah prototipe dari panggilan ini:

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

Di sini, nama file adalah string digunakan untuk nama file mode akses nilai modusdapat menjadi salah satu nilai berikut:

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

Jika proses adalah file biner, Anda perlu menggunakan mode akses mode akses berikut untuk mengganti atas:

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

Menutup file

;

Untuk menutup file, menggunakan fclose () fungsi. Prototipe fungsi adalah sebagai berikut:

 int fclose( FILE *fp );

Jika berhasil, menutupfile, fclose () mengembalikan fungsi nol, kesalahan terjadi saat menutup file, fungsi mengembalikan EOF.Fungsi ini sebenarnya, akan menghapus data dalam buffer, menutup file, dan melepaskan semua memori untuk file. EOF adalah konstan didefinisikan dalam file headerstdio.h di.

C library standar menyediakan berbagai fungsi untuk menekan karakter atau dalam bentuk string tetap-panjang untuk membaca dan menulis file.

Menulis ke file

Berikut adalah karakter tulis ke aliran fungsi yang paling sederhana:

int fputc( int c, FILE *fp );

Fungsifputc () menulis karakter c dengan nilai poin parameter fp ke output stream.Jika menulis ini berhasil, ia mengembalikan karakter ditulis, jika terjadi kesalahan, ia mengembalikanEOF.Anda dapat menggunakan fungsi berikut untuk null-string diakhiri akan ditulis ke sungai:

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

Fungsifputs () menulis string ske fp poin ke output stream. Jika menulis ini berhasil, maka akan mengembalikan nilai non-negatif jika terjadi kesalahan, ia mengembalikanEOF.Anda juga dapat menggunakanint fprintf (FILE * fp, const char * Format, ...) fungsi untuk menulis string yang akan ditulis ke file.Coba contoh berikut:

Catatan: Pastikan Anda memiliki tersedia direktori / tmp,jika direktori ini tidak ada, Anda harus membuat direktori pada komputer 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 dijalankan, itu akan dibuat di direktori / tmp, sebuahtest.txt file baru,dan menggunakan dua fungsi yang berbeda menulis dua baris. Mari kita membaca file.

Membaca file

Berikut adalah fungsi yang paling sederhana untuk membaca satu karakter dari file:

int fgetc( FILE * fp );

fgetc () fungsi membaca karakter dari file input ditunjukkan oleh fp.Nilai kembali adalah membaca karakter, jika terjadi kesalahan kembaliEOF.Fungsi berikut ini memungkinkan Anda untuk membaca string dari sungai:

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

Fungsifgets () membaca n dari masukan ditunjuk oleh fp - satu karakter.Ini akan membaca string disalin ke dalambuf penyangga, dan akhirnya menambahkan karakter nulluntuk mengakhiri string.

Jika fungsi sebelum membaca karakter terakhir ditemui karakter baris baru '\ n' di akhir file atau EOF, hanya untuk kembali membaca karakter, termasuk baris baru. Anda juga dapat menggunakanint fscanf (FILE * fp, const char * Format, ...) fungsi untuk membaca string dari file, tapi dalam menghadapi karakter spasi pertama, itu akan berhenti membaca.

#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 dijalankan, itu akan membaca file yang dibuat pada bagian, menghasilkan hasil sebagai berikut:

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

3: This is testing for fputs...

Pertama, metode fscanf () hanya membaca ini,karena dia menemui ruang di belakang. Selanjutnya, sebutfgets () untuk membaca sisanya, sampai akhir baris.Akhirnya, panggilanfgets () dibaca secara keseluruhan baris kedua.

I / O fungsi biner

Berikut dua fungsi untuk input biner dan output:

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 yang digunakan untuk membaca dan menulis blok memori - biasanya sebuah array atau struktur.