Rabu, 05 Desember 2018

File Processing 05-12-2018

Algorithm and Programming 05-12-2018

File Processing:

    File Processing adalah proses untuk membuat, membaca, menyimpan dan memanipulasi 
    file.

    file Processing ada 2 kegiatan utama membuka file dan menutup file (fopen dan fclose)
    file yang dibuka harus ditutup supaya apa yang telah dilakukan tidak hilang.
    
    dalam membuka file ada beberapa mode sepert "a", "w", "r", "w+" , "r+"

    untuk materi ini akan diberikan coding panjang dan akan dijelaskan cara kerjanya
    Contoh Program:

#include<stdio.h>
#include<string.h>


FILE* p;  FILE*xb; // Panggil File
int count = 0;

struct Toko {
    char nama_barang[100];
    int
qty_barang;
    int harga_barang;
} binusmart[100];

void read_file() {
    // R W A R+ W+
    p = fopen("datamarket.txt", "r");
    if(p == NULL) { // kalau file belom tidak ada
        printf("File not found 'datamarket' not found");
    } else {
        // kalau filenya ada
        while(!feof(p)) {
            // baca file
            // separated by "$" / # / ,

            fscanf(p, "%[^#]#%d#%d\n", &binusmart[count].nama_barang, &binusmart[count].qty_barang, &binusmart[count].harga_barang);
            // add count untuk jumlah barang
            count++; // atau count += 1;
        }
    }
    // close file
    fclose(p);
}

void write_file() {
    // R W A R+ W+
    p = fopen("datamarket.txt", "w");
    for(int i = 0; i < count; i++) {
        fprintf(p, "%s#%d#%d\n", binusmart[i].nama_barang, binusmart[i].qty_barang, binusmart[i].harga_barang);
    }
    // close file
    fclose(p);
}

void add_data(char* nama_barang, int qty, int harga_barang) {
    // passing parameter ke dalam data Structure
    strcpy(binusmart[count].nama_barang, nama_barang);
    binusmart[count].qty_barang = qty;
    binusmart[count].harga_barang = harga_barang;
    count++;   
}

void lihat_data() {
    for(int i = 0; i < count; i++) {
        printf("%s %d %d\n", binusmart[i].nama_barang, binusmart[i].qty_barang, binusmart[i].harga_barang);
    }
}

void insert(char* nama_barang, int qty, int harga_barang) {
    p = fopen("datamarket.txt", "a");
    strcpy(binusmart[count].nama_barang, nama_barang);
    binusmart[count].qty_barang = qty;
    binusmart[count].harga_barang = harga_barang;
    fprintf(p, "%s#%d#%d\n", binusmart[count].nama_barang, binusmart[count].qty_barang,     binusmart[count].harga_barang);
    count++;
}

void write_binary_file() {
    int angka[] = {1, 2, 3,4 ,5};
    xb = fopen("binary.txt", "wb");
    fwrite(angka, sizeof(angka), 1, xb);
    fclose(xb);
}

void read_binary_file() {
    int angka[6];
    xb = fopen("binary.txt", "rb");
    fread(angka, sizeof(angka), 1, xb);
    for (int i = 0; i < 6 ; i ++ ) {
         printf("%d ", angka[i]);
    }
    fclose(xb);
}

int main() {
    read_file();

    add_data("Kopi", 12, 2000);
    write_file();

    insert("Append", 10 , 100);
    lihat_data();

    write_binary_file();
    read_binary_file();
    return 0;
}


Pertama untuk mengakses file perlu membuat sebuah membuat file pointer 
        FILE* p;
setiap mau melakukan sesuatu kepada file baik access maupun edit perlu di openterlebih dahulu seperti:
        p = fopen("datamarket.txt", "r");    
        tulisan dengan warna ini menunjukan file yang mau dibuka
        warna ini menunjukan mode. ada beberapa mode
        "r" = membaca atau read file
        "w" = write atau menulis (menulis berarti menghapus semua dari file tersebut)
        "a" = append atau menambahkan
        "wb" = menulis dalam binary
        "rb" = membaca dalam binary
 
 Bila file dengan nama tersebut tidak ada maka nilai p adalah NULL.

 setelah dibuka file tersebut dapat digunakan
ada beberapa perintah yang dapat dilakukan pada file seperti 
fscanf = membaca isi dari file
fprintf = mencetak kedalam isi file. (bukan mencetak dalam sistem bedakan dengan printf)

setelah mengunakan file, file HARUS ditutup dengan fclose(nama pointer file) diingatkan kembali

- Stay curious -

    NIM: 2201762723
    binus.ac.id
    skyconnectiva.com
    Hubert Michael Sanyoto

Tidak ada komentar:

Posting Komentar