Bahasa C
Dalam tutorial ini, Anda akan belajar tentang penanganan file di C. Anda akan belajar menangani I/O standar di C menggunakan fprintf(), fscanf(), fread(), fwrite(), fseek() dll. dengan bantuan contoh.
File adalah wadah di perangkat penyimpanan komputer yang digunakan untuk menyimpan data.
Saat berurusan dengan file, ada dua jenis file yang harus Anda ketahui:
File teks adalah .txt biasa file. Anda dapat dengan mudah membuat file teks menggunakan editor teks sederhana seperti Notepad.
Saat Anda membuka file tersebut, Anda akan melihat semua konten di dalam file sebagai teks biasa. Anda dapat dengan mudah mengedit atau menghapus konten.
Mereka membutuhkan upaya minimal untuk pemeliharaan, mudah dibaca, dan memberikan keamanan paling sedikit dan membutuhkan ruang penyimpanan yang lebih besar.
File biner sebagian besar adalah .bin file di komputer Anda.
Alih-alih menyimpan data dalam teks biasa, mereka menyimpannya dalam bentuk biner (0 dan 1).
Mereka dapat menyimpan jumlah data yang lebih tinggi, tidak mudah dibaca, dan memberikan keamanan yang lebih baik daripada file teks.
Di C, Anda dapat melakukan empat operasi utama pada file, baik teks maupun biner:
Saat bekerja dengan file, Anda perlu mendeklarasikan pointer tipe file. Deklarasi ini diperlukan untuk komunikasi antara file dan program.
FILE *fptr;
Membuka file dilakukan dengan menggunakan fopen()
fungsi yang didefinisikan dalam stdio.h
file header.
Sintaks untuk membuka file dalam I/O standar adalah:
ptr = fopen("fileopen","mode");
Misalnya,
fopen("E:\\cprogram\\newprogram.txt","w");
fopen("E:\\cprogram\\oldprogram.bin","rb");
newprogram.txt
tidak ada di lokasi E:\cprogram
. Fungsi pertama membuat file baru bernama newprogram.txt
dan membukanya untuk menulis sesuai mode 'w' . oldprogram.bin
ada di lokasi E:\cprogram
. Fungsi kedua membuka file yang ada untuk dibaca dalam mode biner 'rb' . Mode | Arti Modus | Selama Tidak Ada File |
---|---|---|
r | Terbuka untuk membaca. | Jika file tidak ada, fopen() mengembalikan NULL. |
rb | Buka untuk membaca dalam mode biner. | Jika file tidak ada, fopen() mengembalikan NULL. |
w | Terbuka untuk menulis. | Jika file ada, isinya akan ditimpa. Jika file tidak ada, itu akan dibuat. |
wb | Buka untuk menulis dalam mode biner. | Jika file ada, isinya akan ditimpa. Jika file tidak ada, itu akan dibuat. |
a | Buka untuk menambahkan. Data ditambahkan ke akhir file. | Jika file tidak ada, itu akan dibuat. |
ab | Buka untuk menambahkan dalam mode biner. Data ditambahkan ke akhir file. | Jika file tidak ada, itu akan dibuat. |
r+ | Terbuka untuk membaca dan menulis. | Jika file tidak ada, fopen() mengembalikan NULL. |
rb+ | Terbuka untuk membaca dan menulis dalam mode biner. | Jika file tidak ada, fopen() mengembalikan NULL. |
w+ | Terbuka untuk membaca dan menulis. | Jika file ada, isinya akan ditimpa. Jika file tidak ada, itu akan dibuat. |
wb+ | Terbuka untuk membaca dan menulis dalam mode biner. | Jika file ada, isinya akan ditimpa. Jika file tidak ada, itu akan dibuat. |
a+ | Terbuka untuk membaca dan menambahkan. | Jika file tidak ada, itu akan dibuat. |
ab+ | Terbuka untuk membaca dan menambahkan dalam mode biner. | Jika file tidak ada, itu akan dibuat. |
File (teks dan biner) harus ditutup setelah membaca/menulis.
Menutup file dilakukan dengan menggunakan fclose()
fungsi.
fclose(fptr);
Di sini, fptr
adalah penunjuk file yang terkait dengan file yang akan ditutup.
Untuk membaca dan menulis ke file teks, kami menggunakan fungsi fprintf()
dan fscanf().
Itu hanyalah versi file printf()
dan scanf()
. Satu-satunya perbedaan adalah fprintf()
dan fscanf()
mengharapkan pointer ke struktur FILE.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
// use appropriate location if you are using MacOS or Linux
fptr = fopen("C:\\program.txt","w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("Enter num: ");
scanf("%d",&num);
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}
Program ini mengambil nomor dari pengguna dan menyimpannya dalam file program.txt
.
Setelah Anda mengkompilasi dan menjalankan program ini, Anda dapat melihat file teks program.txt
dibuat di drive C komputer Anda. Saat Anda membuka file, Anda dapat melihat bilangan bulat yang Anda masukkan.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
if ((fptr = fopen("C:\\program.txt","r")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
fscanf(fptr,"%d", &num);
printf("Value of n=%d", num);
fclose(fptr);
return 0;
}
Program ini membaca bilangan bulat yang ada di program.txt
file dan mencetaknya ke layar.
Jika Anda berhasil membuat file dari Contoh 1 , menjalankan program ini akan memberi Anda bilangan bulat yang Anda masukkan.
Fungsi lain seperti fgetchar()
, fputc()
dll. dapat digunakan dengan cara yang serupa.
Fungsi fread()
dan fwrite()
digunakan untuk membaca dari dan menulis ke file pada disk masing-masing dalam kasus file biner.
Untuk menulis ke dalam file biner, Anda perlu menggunakan fwrite()
fungsi. Fungsi mengambil empat argumen:
fwrite(addressData, sizeData, numbersData, pointerToFile);
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","wb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
for(n = 1; n < 5; ++n)
{
num.n1 = n;
num.n2 = 5*n;
num.n3 = 5*n + 1;
fwrite(&num, sizeof(struct threeNum), 1, fptr);
}
fclose(fptr);
return 0;
}
Dalam program ini, kami membuat file baru program.bin
di drive C.
Kami mendeklarasikan struktur threeNum
dengan tiga angka - n1, n2 dan n3 , dan mendefinisikannya dalam fungsi utama sebagai num.
Sekarang, di dalam for loop, kita menyimpan nilainya ke dalam file menggunakan fwrite()
.
Parameter pertama mengambil alamat num dan parameter kedua mengambil ukuran struktur threeNum
.
Karena kita hanya memasukkan satu contoh num , parameter ketiga adalah 1
. Dan, parameter terakhir *fptr
menunjuk ke file tempat kita menyimpan data.
Terakhir, kami menutup file.
Fungsi fread()
juga ambil 4 argumen yang mirip dengan fwrite()
fungsi seperti di atas.
fread(addressData, sizeData, numbersData, pointerToFile);
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","rb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
for(n = 1; n < 5; ++n)
{
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
}
fclose(fptr);
return 0;
}
Dalam program ini, Anda membaca file yang sama program.bin
dan ulangi catatan satu per satu.
Secara sederhana, Anda membaca satu threeNum
catatan threeNum
ukuran dari file yang ditunjuk oleh *fptr ke dalam struktur num .
Anda akan mendapatkan catatan yang sama dengan yang Anda sisipkan di Contoh 3 .
Jika Anda memiliki banyak record di dalam file dan perlu mengakses record pada posisi tertentu, Anda perlu mengulang semua record sebelum mendapatkan record.
Ini akan membuang banyak memori dan waktu operasi. Cara yang lebih mudah untuk mendapatkan data yang diperlukan dapat dicapai dengan menggunakan fseek()
.
Seperti namanya, fseek()
mencari kursor ke record yang diberikan dalam file.
fseek(FILE * stream, long int offset, int whence);
Aliran parameter pertama adalah penunjuk ke file. Parameter kedua adalah posisi record yang akan ditemukan, dan parameter ketiga menentukan lokasi di mana offset dimulai.
Dari mana | Artinya |
---|---|
SEEK_SET | Memulai offset dari awal file. |
SEEK_END | Memulai offset dari akhir file. |
SEEK_CUR | Memulai offset dari lokasi kursor saat ini dalam file. |
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","rb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
// Moves the cursor to the end of the file
fseek(fptr, -sizeof(struct threeNum), SEEK_END);
for(n = 1; n < 5; ++n)
{
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
fseek(fptr, -2*sizeof(struct threeNum), SEEK_CUR);
}
fclose(fptr);
return 0;
}
Program ini akan mulai membaca record dari file program.bin
dalam urutan terbalik (terakhir ke pertama) dan mencetaknya.
Bahasa C
Pengecualian adalah masalah yang muncul selama eksekusi program. Pengecualian C++ adalah respons terhadap keadaan luar biasa yang muncul saat program sedang berjalan, seperti upaya untuk membagi dengan nol. Pengecualian menyediakan cara untuk mentransfer kontrol dari satu bagian program ke bagian l
Sejauh ini, kami telah menggunakan lingkungan MATLAB sebagai kalkulator. Namun, MATLAB juga merupakan bahasa pemrograman yang kuat, serta lingkungan komputasi yang interaktif. Pada bab sebelumnya, Anda telah mempelajari cara memasukkan perintah dari command prompt MATLAB. MATLAB juga memungkinkan A
Sebagai mahasiswa, Anda sering tidak tahu bagaimana menangani file PCB yang berbeda. Sebagai insinyur atau desainer, Anda mungkin perlu memproduksi secara massal papan sirkuit tercetak (PCB). Jadi, jika Anda bertanya-tanya tentang bagaimana Eagle mengkonversi ke Gerber? Atau bagaimana mengkonversi
Baik Anda membuat suku cadang untuk sepeda motor atau robot pengikat tulangan, Anda harus memulai dengan file desain berbantuan komputer (computer-aided design (CAD). File digital ini berisi desain 3D dan data material, tekstur, dan toleransi lainnya untuk membantu tim produk merencanakan, memvisual