Skip to main content
Definisi stream
Stream adalah urutan dari suatu karakter yang disimpan sebagai perangkat penyimpanan data sekunder. Saat program C++ di jalankan, ada 3 standard stream yang aktif yaitu :
1. Standard Input Stream
 Mengontrol stream input dari masukan dari keyboard
2. Standard Output Stream 
Mengontrol stream output ke monitor
3. Standard Error Stream 
mengontrol pesan yang error|

Definisi File
>File adalah kumpulan catatan
>Rekam adalah kumpulan bidang
>Kolom adalah blok dari byte
>Byte adalah kumpulan bit

ada beberapa definisi dari file yaitu :
typedef struct  {
   int level;                            // fill/empty level of buffer
   unsigned flags;      // File status flags
   char fd;        // File descriptor
   unsigned char hold;    // Unget char if no buffer
   int bsize; // Buffer size
   unsigned char *buffer;   // Data transfer buffer
   unsigned char *curp; // Current active pointer
   unsigned istemp; // Temporary file indicator 
   short token; //digunakan untuk mengecek validitas
}  FILE;   

Open File
untuk membukasuatu file digunakan fopen():
FILE *fopen (const char *filename, const char *mode );
fopen () akan mengembalikan pointer ke awal area buffer. Null akan dikembalikan jika file tidak dapat dibuka.
mode value :
Nilai mode yang memungkinkan:
Deskripsi:          Mode:
"R"                  membuka file untuk dibaca.
"W"                 membuat file yang akan ditulis.
"A"                  membuka File untuk menambahkan data.
"R +"               membuka File untuk membaca / menulis.
"W +"              membuat file untuk dibaca / ditulis.
"A +"               membuka File untuk dibaca / ditambahkan
"Rb"                membuka File (biner) untuk dibaca.
"WB"               membuat file (biner) untuk operasi tulis.

Close File
untuk Menutup File menggunakan fclose ():

int fclose (FILE * stream);

fclose () didefinisikan pada <stdio.h>
fclose () akan mengembalikan 0 jika berhasil, dan EOF jika terjadi kesalahan
EOF (End Of File) setara dengan -1
fclose () akan merilis area buffer dan segera mengirim data yang tersisa ke file.

Input & Output File
fgetc (INPUT)
Baca satu karakter dari file
fgetc (stdin) setara dengan getchar ()
Sintaks: int fgetc (FILE * stream);
Kembali ke karakter ketika berhasil, dan EOF saat kesalahan

fputc (OUTPUT)
Menulis satu karakter ke file
fputc ('a', stdout) mirip dengan putchar ('a')
Sintaks: int fputc (int c, FILE * stream);
Kembali ke karakter ketika berhasil, dan EOF jika ada kesalahan

Contoh :
#include <stdio.h>
void main( void ) {
      FILE *stream;
      char *p, buffer[] = "This is the line of output\n";
      int ch; ch = 0;
      stream = stdout;
      for( p = buffer; (ch != EOF) && (*p != '\0'); p++ )
                ch = putc( *p, stream );
}

Contoh membaca file fgetc.c :
#include <stdio.h>
int main(void)
{
  char ch;    FILE *fp;
  fp=fopen("fgetc.c","r");
  if(fp==NULL){
  printf("File fgetc.c can’t be opened\n");   exit(1);
  }
  while(!feof(fp)){
  ch=fgetc(fp);    printf("%c",ch);
  }
  fclose(fp);
  return 0;
}
Contoh membaca file fgetc.c dengan fgets :
#include <stdio.h>
int main(void)
{
    FILE *fp;
    char ss[80];
    fp=fopen("fgets.c","r");
    if(fp==NULL){
        printf("File fgets.c can’t be opened\n");   exit(1);
    }
    while(fgets(ss, 80, fp)) printf("%s",ss);
    fclose(fp);
    return 0;
}

Contoh menulis string ke file test.txt menggunakan fputs:
#include <stdio.h>
int main(void)
{
  FILE *fp;
    char ss[80]=“This statement’s saved to file test.txt using fputs";
    fp=fopen("test.txt","w");
    if(fp==NULL){
  printf("File test.txt can’t be created\n");
  exit(1);
  }
  fputs(ss, fp);
  fclose(fp);
  return 0;
}
Contoh membaca file fgets.c menggunakan fgets:
#include <stdio.h>
int main(void)
{
    FILE *fp;
    char ss[80];
    fp=fopen("fgets.c","r");
    if(fp==NULL){
        printf("File fgets.c can’t be opened\n");   exit(1);
    }
    while(fgets(ss, 80, fp)) printf("%s",ss);
    fclose(fp);
    return 0;
}

Contoh penulisan data ke file test.txt menggunakan fprintf :
#include <stdio.h>
int main(void)
{
    FILE *fp;
    fp=fopen("test.txt","w");
    if(fp==NULL){
        printf("File test.txt can’t be created\n");
        exit(1);
    }
    fprintf(fp,"%d %s %f\n",1,“Amir", 3.95);
    fprintf(fp,"%d %s %f\n",2,“Tono", 3.15);
    fclose(fp);
    return 0;
}
Contoh membaca data dari file test.txt menggunakan fscanf :
 #include <stdio.h>
int main(void)
{
  FILE *fp;  int no; char name[20]; float gpa;
  fp=fopen("test.txt","r");
  if(fp==NULL){
  printf("File test.txt can’t be opened\n");   exit(1);
  }
  fscanf(fp,"%d %s %f",&no,name, &gpa);
  printf("%d %s %f\n",no,name,gpa);
  fscanf(fp,"%d %s %f",&no,name, &gpa);
  printf("%d %s %f\n",no,name,gpa);
  fclose(fp);     return 0;
}

Contoh penulisan data ke file biner test.dat menggunakan fwrite :
#include <stdio.h>
int main(void)
{
    FILE *fp;
    int Arr[]={1,2,3,4,5};
    fp=fopen("test.dat","w");
    if(fp==NULL){
        printf("File test.dat can’t be created\n");
        exit(1);
    }
    fwrite(Arr,sizeof(Arr),1,fp);
    fclose(fp);
    return 0;
}

Contoh membaca data dari file biner test.dat menggunakan fread
#include <stdio.h>
int main(void)
{
    FILE *fp; int i;
    int Arr[5];
    fp=fopen("test.dat","r");
    if(fp==NULL){
        printf("File test.dat can’t be opened\n");
        exit(1);
    }
    fread(Arr,sizeof(Arr),1,fp);
    for(i=0; i<5; i++) printf("%d ",Arr[i]);
    fclose(fp);
    return 0;
}

Comments