Sunday, December 16, 2018

File Processing

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

Sorting and Searching

Dalam pemograman, ada kalanya kita diminta untuk sorting data berdasarkan kategori tertentu. Ada berbagai macam cara sorting, namun berbeda ...