File Input Dan Output Pada Pemrograman Bahasa C

NAMA   : ALFAT SUGIARTO
KELAS  : 1ID07
NPM      : 30419462
MAPEL : DASAR KOMPUTER DAN PEMROGRAMAN 2A
DOSEN : KURNIAWAN B.PRIANTO, S.KOM.SH.MM

Honderden Citrix-servers kwetsbaar voor misbruik | Computable.be

  • FILE INPUT DAN OUTPUT

Sebuah file yang merupakan urutan byte pada disk mana sekelompok data terkait disimpan. File dibuat untuk penyimpanan data permanen. Ini adalah struktur yang sudah jadi.

Dalam bahasa C, kami menggunakan pointer struktur tipe file untuk mendeklarasikan file.

FILE *fp;
C menyediakan sejumlah fungsi yang membantu untuk melakukan operasi file dasar. Berikut adalah fungsinya,


Fungsideskripsi
fopen ()buat file baru atau buka file yang sudah ada
fclose ()menutup file
getc ()membaca karakter dari file
putc ()menulis karakter ke file
fscanf ()membaca sekumpulan data dari suatu file
fprintf ()menulis satu set data ke file
getw ()membaca bilangan bulat dari file
putw ()menulis bilangan bulat ke file
fseek ()atur posisi ke titik keinginan
ftell ()memberikan posisi saat ini dalam file
rewind ()atur posisi ke titik awal

Membuka File atau Membuat File


The fopen()Fungsi ini digunakan untuk membuat file baru atau membuka file yang ada.
Sintaks Umum:

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

Di sini, *fpadalah pointer FILE ( FILE *fp), yang akan menyimpan referensi ke file yang dibuka (atau dibuat).
nama file adalah nama file yang akan dibuka dan mode menentukan tujuan membuka file. Mode dapat dari tipe berikut,

modedeskripsi
rmembuka file teks dalam mode membaca
wmembuka atau membuat file teks dalam mode penulisan.
Sebuahmembuka file teks dalam mode tambahkan
r +membuka file teks dalam mode membaca dan menulis
w +membuka file teks dalam mode membaca dan menulis
a +membuka file teks dalam mode membaca dan menulis
rbmembuka file biner dalam mode membaca
wbmembuka atau membuat file biner dalam mode penulisan
abmembuka file biner dalam mode append
rb +membuka file biner dalam mode membaca dan menulis
wb +membuka file biner dalam mode membaca dan menulis
ab +membuka file biner dalam mode membaca dan menulis

Menutup File

The fclose()Fungsi ini digunakan untuk menutup file yang sudah dibuka.
Sintaks Umum:

int fclose( FILE *fp);


Di sini fclose()fungsi menutup file dan mengembalikan nol jika berhasil, atau EOF jika ada kesalahan dalam menutup file. EOF ini adalah konstanta yang didefinisikan dalam file header stdio.h .

Operasi Input / Output pada File

Pada tabel di atas kita telah membahas tentang berbagai fungsi I / O file untuk melakukan membaca dan menulis pada file. getc()dan putc()merupakan fungsi paling sederhana yang dapat digunakan untuk membaca dan menulis karakter individu ke file.

#include<stdio.h>

int main()
{
    FILE *fp;
    char ch;
    fp = fopen("one.txt", "w");
    printf("Enter data...");
    while( (ch = getchar()) != EOF) {
        putc(ch, fp);
    }
    fclose(fp);
    fp = fopen("one.txt", "r");
 
    while( (ch = getc(fp)! = EOF)
    printf("%c",ch);
    
    // closing the file pointer
    fclose(fp);
    
    return 0;
}

Membaca dan Menulis ke File menggunakan fprintf()danfscanf()

#include<stdio.h>

struct emp
{
    char name[10];
    int age;
};

void main()
{
    struct emp e;
    FILE *p,*q;
    p = fopen("one.txt", "a");
    q = fopen("one.txt", "r");
    printf("Enter Name and Age:");
    scanf("%s %d", e.name, &e.age);
    fprintf(p,"%s %d", e.name, e.age);
    fclose(p);
    do
    {
        fscanf(q,"%s %d", e.name, e.age);
        printf("%s %d", e.name, e.age);
    }
    while(!feof(q));
}


Dalam program ini, kami telah membuat dua pointer FILE dan keduanya merujuk ke file yang sama tetapi dalam mode yang berbeda.


fprintf()fungsi langsung menulis ke dalam file, sambil fscanf()membaca dari file, yang kemudian dapat dicetak pada konsol menggunakan printf()fungsi standar .

Perbedaan antara Mode Tambah dan Tulis



Mode tulis (w) dan mode Tambah (a), saat membuka file hampir sama. Keduanya digunakan untuk menulis dalam file. Dalam kedua mode, file baru dibuat jika belum ada.


Satu-satunya perbedaan yang mereka miliki adalah, ketika Anda membuka file dalam mode tulis , file tersebut diatur ulang, yang mengakibatkan penghapusan semua data yang sudah ada dalam file. Saat dalam mode tambahkan ini tidak akan terjadi. Mode tambahkan digunakan untuk menambahkan atau menambahkan data ke data file yang ada (jika ada). Oleh karena itu, ketika Anda membuka file dalam mode Tambah (a), kursor diposisikan di akhir data saat ini dalam file.

Membaca dan Menulis dalam File Biner



File Biner mirip dengan file teks, tetapi hanya berisi data numerik besar. Mode Pembukaan disebutkan dalam tabel untuk mode pembukaan di atas.


fread()dan fwrite()fungsi yang digunakan untuk membaca dan menulis adalah file biner.

fwrite(data-element-to-be-written, size_of_elements, number_of_elements, pointer-to-file);

fread()juga digunakan dengan cara yang sama, dengan argumen yang sama seperti fwrite()fungsi. Disebutkan di bawah ini adalah contoh sederhana dari penulisan ke dalam file biner

const char *mytext = "The quick brown fox jumps over the lazy dog";   
FILE *bfp= fopen("test.txt", "wb");   
if (bfp) 
{     
    fwrite(mytext, sizeof(char), strlen(mytext), bfp);     
    fclose(bfp);   
}


fseek(), ftell()dan rewind()fungsi 

  • fseek(): Digunakan untuk memindahkan kontrol baca ke posisi berbeda menggunakan fungsi fseek.
  • ftell(): Ini memberitahu lokasi byte posisi kursor saat ini di file pointer.
  • rewind(): Ini memindahkan kontrol ke awal file.



  • STANDARD FILE

Objek yang berisi informasi untuk mengontrol aliranJenis objek yang mengidentifikasi aliran dan berisi informasi yang diperlukan untuk mengendalikannya, termasuk pointer ke buffernya, indikator posisinya dan semua indikator statusnya.

Objek FILE biasanya dibuat oleh panggilan ke fopen atau tmpfile , yang keduanya mengembalikan pointer ke salah satu objek ini.

Konten objek FILE tidak dimaksudkan untuk diakses dari luar fungsi header <cstdio> dan <cwchar> ; Bahkan, program portabel hanya akan menggunakannya dalam bentuk pointer untuk mengidentifikasi aliran, karena untuk beberapa implementasi, bahkan nilai dari pointer itu sendiri dapat menjadi signifikan untuk mengidentifikasi aliran (yaitu, pointer ke salinan FILEobjek dapat diartikan berbeda dari pointer ke aslinya).

Alokasi memorinya dikelola secara otomatis: dialokasikan oleh fopen atau tmpfile , dan merupakan tanggung jawab perpustakaan untuk membebaskan sumber daya begitu aliran ditutup menggunakan fclose atau program berakhir secara normal.

Pada penyertaan file header <cstdio> , tiga objek jenis ini secara otomatis dibuat, dan pointer ke mereka dinyatakan: stdin , stdout dan stderr , masing-masing terkait dengan aliran input standar, aliran output standar, dan aliran kesalahan standar


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* FEOF example */
#include <stdio.h>

int main()
{
   FILE * pFile;
   char buffer [100];

   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile) )
     {
       if ( fgets (buffer , 100 , pFile) == NULL ) break;
       fputs (buffer , stdout);
     }
     fclose (pFile);
   }
   return 0;


  • FUNGSI INPUT DAN OUTPUT

Fungsi Output pada C


Ada dua macam fungsi yang bisa digunakan untuk menampilkan output:

1. Fungsi printf()

Fungsi printf() merupakan fungsi untuk menampilkan output ke layar komputer. Fungsi ini terdapat pada library stdio.h.
Oleh sebab itu, ketika kita diharuskan untuk menuliskan #include <stdio.h> di bagian atas program agar bisa menggunakan fungsi ini.
Berikut ini struktur dasar fungsi printf():

Fungsi printf di c
Perhatikan:

"format" adalah sebuah teks (string) untuk ditampilkan. Lalu tanda ... akan berisi sebuah variabel atau nilai untuk ditampilkan berdasarkan format yang diberikan pada teks "format".

Mari kita lihat contohnya:
Buatlah sebuah program C bernama output.c, lalu isi dengan kode berikut.

#include <stdio.h>

int main(){
    printf("Hello, ini adalah teks output\n");
    printf("Nama saya %s\n", "Dian");
    printf("Usia saya %d\n", 20);
    return 0;
}
Hasilnya:
Output program C


Ada beberapa hal yang perlu di perhatikan…


Pada fungsi printf() kita menggunakan simbol %s, %d, dan \n untuk format teks.


Mari kita bahas arti dari simbol tersebut:
  • %s adalah simbol untuk menampilkan nilai string;
  • %d adalah simbol untuk menampilkan nilai angka atau bilangan desimal;
  • \n adalah simbol untuk membuat baris baru.


Selain tiga simbol tersebut, masih banyak lagi simbol yang lain.

SimbolArti atau Fungsi
%cuntuk menampilkan karakter
%suntuk menampilkan teks (string)
%d%iuntuk menampilkan bilangan desimal
%funtuk menampilkan bilangan pecahan
%ountuk menampilkan bilangan oktal
%xuntuk menampilkan bilangan heksadesimal
\tuntuk membuat tabs

2. Fungsi puts()

Fungsi puts() adalah fungsi untuk menampilkan output. Fungsi ini juga terdapat pada library stdio.h.
Perbedaanya dengan printf(), fungsi puts() tidak memerlukan format.
Fungsi puts() akan selalu membuat baris baru. Jadi tidak perlu menggunakan simbol \n seperti pada printf().

Fungsi Puts pada C
Contoh program: fungsi_puts.c

#include <stdio.h>

int main(){
    puts("Hello World");
    puts("Nama Saya Dian");
    
    return 0;
}
Hasilnya:
Program C dengan fungsi puts
Selain fungsi puts(), terdapat juga fungsi putchar() yang khusus untuk menampilkan satu karakter saja.

Contoh:

#include <stdio.h>

int main(){
    putchar('A');

    return 0;
}
Maka akan menghasilkan output:
A
Lalu pertanyaannya
Fungsi manakah yang harus saya pakai?
Jawabannya, tergantung…
Tergantung dari teks apa yang akan ditampilkan.
Apabila di sana kita akan menampilkan teks dan nilai atau variabel, sebaiknya menggunakan printf() karena bisa membuat format.
Tapi kalau teks yang biasa saja, bisa pakai puts().

Fungsi Input pada C

Pada bahasa C, terdapat beberapa fungsi unutk mengambil input.
Oh iya, input yang akan kita bahas di sini adalah input dari keyboard.
Input juga bisa dari file, kamera, mikrofon, dan sebagainya.
Tapi kita fokus dulu bahas yang paling mudah…
Ini adalah fungsi untuk mengambil input dari keyboard:

1. Fungsi scanf()

Fungsi scanf() adalah fungsi untuk mengambil input dari keyboard. Fungsi ini memiliki format seperti fungsi printf().

Fungsi scanf di bahasa c
Format yang diberikan tergantung dari jenis tipe data apa yang ingin kita ambil.
Misalnya mau mengambil angka, maka kita bisa pakai %d atau %i.
Mari kita lihat contohnya:

#include <stdio.h>

int main () {
    // membuat variabel
    char name[20], web_address[30];

    printf("Nama: ");
    scanf("%s", &name);

    printf("Alamat web: ");
    scanf("%s", &web_address);

    printf("\n------------------------------\n");
    printf("Nama yang diinputkan: %s\n", name);
    printf("Alamat Web yang diinputkan: %s\n", web_address);
   
    return 0;
}
Hasilnya:
Program input dengan scanf di C
Tapi saat kita menginputkan teks yang mengandung spasi, hasilnya akan dipecah menjadi dua seperti ini:
Input scanf mengandung spasi
Untuk mengatasi masalah ini, kita bisa ubah format yang digunakan pada scanf() menjadi seperti ini:

printf("Nama: ");
scanf("%[^\n]s", name);
Maka fungsi scanf() akan menerima spasi.
Dalam menggunakan scanf(), kita dianjurkan menggunakan simbol & sebelum nama variabel.
Contoh:

#include <stdio.h>

void main(){

    int a, b, c;

    printf("Inputkan nilai a: ");
    scanf("%i", &a);

    printf("Inputkan nilai b: ");
    scanf("%i", &b);

    c = a + b;

    printf("Hasil a + b: %i", c);

}


simbol & berfungsi untuk mengambil alamat memori dari sebuah variabel
Fungsi scanf() membutuhkan tempat untuk menyimpan nilai yang akan diinputkan.

Karena itu kita memberikan simbol & di depan nama variabel untuk menentukan alamat memori yang akan digunakan oleh scanf().

Nanti ini akan kita bahas lagi pada Pointer.

2. Fungsi gets()

Fungsi gets() adalah fungsi untuk mengambil input dalam satu baris. Fugnsi gets() tidak memerlukan format seperti scanf().
Fungsi gets di bahasa c
Contoh:
#include <stdio.h>

int main () {
   char name[50], web_address[50];

   printf("Nama: ");
   gets(name);
   
   printf("Alamat web: ");
   gets(web_address);

   printf("You entered: %s\n", name);
   printf("Web address: %s\n", web_address);

   return(0);
}
Hasilnya:
Program input dengan gets di C
Saat melakukan kompilasi, kita akan mendapatkan peringatan:
warning: the `gets' function is dangerous and should not be used.
ini bukan error, melainkan hanya peringatan saja agar tidak menggunakan fungsi gets().
Mengapa?
Karena dapat menyebabkan masalah buffer overflow pada program. 1
Lalu bagaimana solusinya?
Kita bisa menggunakan:

3. Fungsi fgets()


Fungsi fgets() lebih aman dibandingkan gets(), karena kita bisa menentukan ukuran buffer dan sumber inputan.
Fungsi fgets di bahasa c
Ukuran buffer adalah batas ukuran panjang string yang diinputkan. Lalu stdin adalah sumber inputan dari keyboard.
Kita juga bisa mengambil input dari file dengan fgets() dengan memasukan pointer FILE pada stdin.
Untuk lebih jelasnya, mari kita lihat contohnya:

#include <stdio.h>

int main(){
    char name[50], email[50];
    
    printf("Nama: ");
    fgets(name, sizeof(name), stdin);
    
    printf("Email: ");
    fgets(email, sizeof(email), stdin);
   
    printf("\n-------------------------\n");
    printf("Nama anda: %s", name);
    printf("Alamat email: %s", email);
    
    return 0;
}
Hasilnya:
Contoh program dengan fungsi fgets


Pada contoh program di atas, kita menggunakan fungsi sizeof() untuk mengambil ukuran buffer dari variabel.


Ukuran ini akan menjadi batas maksimum dari inputan.

















DAFTAR PUSTAKA:

https://www.studytonight.com/c/file-input-output.php
https://www.petanikode.com/c-input-output/
http://www.cplusplus.com/reference/cstdio/FILE/






Komentar

Postingan populer dari blog ini

Contoh Pertanyaan Pada Pemrograman Bahasa C

KONSEPSI ILMU BUDAYA DASAR DALAM KESUSASTRAAN

PEMROGRAMAN BAHASA C

Array, String Dan Fungsi String Pada Bahasa C

KEJAHATAN TEKNOLOGI

Control Statement, Fungsi Dan Variabel Pada Bahasa C