Sebelum membaca bagian ini, ada baiknya pembaca memahami dan membaca terlebih dahulu Struct yang telah di posting di blog ini.
Dalam pemograman, kadangkala kita diharuskan untuk membaca dari file, atau mungkin menulis sebuah file.
Dalam melakukan hal tersebut, harus ada Buffer Area
Buffer area adalah tempat penyimpanan sementara sebelum semua datanya ditambahkan dalam file.
Syntax :
FILE *nama_variable
Cara membuka sebuah file
Syntax :
FILE *nama_variable = fopen("namaFile.fileFormat","mode");
Keterangan:
- nama_variable = nama Buffer Area
- namafile.fileformat = Nama File yang ingin diproses, misalnya : "data.txt", fileFormat = .txt
- mode:
"w", digunakan untuk write file, yaitu untuk menulis data ke dalam file
"r" digunakan untuk read file, yaitu membaca file yang sudah ada
"a" digunakan untuk append file, yaitu untuk menambahkan ke dalam file yang sudah ada. Jika belum ada file, program akan melakukan "w", yaitu write file
Untuk menandakan file telah selesai diproses:
Syntax:
fclose(nama_variable);
fclose berguna untuk melepas bufferArea dan mengirimkan data sisa ke file.
Jika file tidak di close, maka program akan tetap membuka file dan menganggap file masih ingin diproses.
fscanf
Digunakan untuk read file. Cara kerjanya sama seperti scanf, namun pada bagian depannya ditambahkan lagi 1 parameter, yaitu bufferArea/ nama_variable
fprintf
Digunakan untuk write file. Cara kerjanya sama seperti printf, namun pada
bagian depannya ditambahkan lagi 1 parameter, yaitu bufferArea/
nama_variable
feof
File end of File
Syntax: feof(nama_variable)
Menandakan apakah sudah akhir file atau tidak
Jika tidak EOF, return value 0
Contoh read file:
#include<stdio.h>
int main()
{
int num[10], count = 0;
FILE *fp = fopen("data.txt","r"); //readFile
if(!fp) { //if program couldn't find file, can be written as fp == NULL
printf("File Not Found!\n");
}
while(!feof(fp))
{
fscanf(fp,"%d\n",num[count]); // simpan dalam variable num
count++;
}
fclose(fp);
//print array
for(int i = 0 ; i < count ; i++)
{
printf("%d\n",num[i]);
}
return 0;
}
File data.txt: (file must be on the same directory as your program)
1
2
3
4
5
6
Output program:
1
2
3
4
5
6
Contoh write file:
#include<stdio.h>
int main()
{
int num[] = {1,2,3,4,5,6};
int count = 0;
FILE *fp = fopen("data.txt","w"); //writeFile
for(int i = 0 ; i < 6 ; i++)
{
fprintf("%d\n",num[i]);
printf("%d\n",num[i]);
}
fclose(fp);
return 0;
}
File data.txt: (created)
1
2
3
4
5
6
Output program:
1
2
3
4
5
6
Contoh append file:
#include<stdio.h>
int main()
{
int num[] = {7,8,9,10,11,12};
int count = 0;
FILE *fp = fopen("data.txt","a"); //appendFile
for(int i = 0 ; i < 6 ; i++)
{
fprintf("%d\n",num[i]);
printf("%d\n",num[i]);
}
fclose(fp);
return 0;
}
File data.txt: (before append)
1
2
3
4
5
6
File data.txt: (after append)
1
2
3
4
5
6
7
8
9
10
11
12
Output program:
7
8
9
10
11
12
Scanning a lot of data in file
To scan a lot of data and save it in a program, use struct
Example:
File mahasiswa.txt:
Andi#18#Jakarta
Budi Tomo#19#Medan
Lili#18#Bogor
Tania#17#Yogyakarta
Jojo#20#Jakarta
Program:
struct data
{
char name[20];
int age;
char tempatlahir[20];
} mhs[20];
int main()
{
int count = 0;
FILE *fp = fopen("mahasiswa.txt","r");
while(!feof(fp))
{
fscanf(fp,"%[^#]#%d#%[^\n]\n",mhs[count].name,mhs[count].age,mhs[count].tempatlahir);
count++;
}
fclose(fp);
//print data
for(int i = 0 ; i < count ; i++)
{
printf("%s %d %s\n",mhs[i].name,mhs[i].age,mhs[i],tempatlahir);
}
return 0;
}
No comments:
Post a Comment