saya menawarkan cara untuk membaca file secara
biner apa pun jenis file-nya.

isi dari file yg dibaca disimpan dalam
buffer bertipe char.

source code sbb:

/* - begin file : readfile.c - */
/******************************************
 * compile :
 *   borlandc : bcc32 readfile.c
 *   gcc      : gcc readfile.c -o readfile
 *******************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>

#define MY_CALLOC(cnt, type) \
        (type *)calloc(cnt, sizeof(type))

int main (int argc, char **argv)
{
  if (argc == 3) {
    /* fs : file yg akan dibaca */
    FILE *fs = fopen(argv[1], "rb");

    /* fd : file hasil proses */
    FILE *fd = fopen(argv[2], "wb");

    struct stat statbuf;

    /* f_size : akan diisi ukuran file */
    int f_size;

    /* buffer tempat isi file */
    char *buf;

    if (fs == NULL || fd == NULL) {
      exit(1);
    }
    if (fstat(fileno(fs), &statbuf)) {
      printf("Error reading %s\n", argv[1]);
      fclose(fs);
      fclose(fd);
      exit(1);
    }
    f_size = statbuf.st_size;
    buf = MY_CALLOC(f_size, char);
    if (buf == NULL) {
      puts("Not enough memory!");
      fclose(fs);
      fclose(fd);
      exit(1);
    }
    if (fread(buf, f_size, 1, fs) != f_size) {
      printf("Error reading %s\n", argv[1]);
      free(buf);
      fclose(fs);
      fclose(fd);
      exit(1);
    }
    fclose(fs);
    /*************************************
     * dari sini buf sudah berisi isi dari
     * file yg dibaca (tiap byte).
     * lakukan proses yg anda inginkan
     **************************************/
    if (fwrite(buf, f_size, 1, fd) != f_size) {
      printf("Error writing %s\n", argv[2]);
      free(buf);
      fclose(fd);
      exit(1);
    }
    fclose(fd);
    free(buf);
  } else {
    puts("Usage : readfile [source] [target]");
  }

  return(0);
}
/* - end file - */

demikian usulan saya semoga berguna...
(mohon maaf kalo ada error karena saya di warnet)


--- Arman Idris <[EMAIL PROTECTED]> wrote:

> Thanks all,
> 
> Sekarang saya sudah ngerti dikit tapi mo nanya lagi
> (sekalian
> ngeramein milis :) ).
> 
> Selama ini yang saya baca setiap ada operasi file
> biasanya filenya
> file teks, pake library standar c fopen() atau
> syscall open(), gimana
> kalau filenya bukan teks seperti file log
> (lastlog,wtmp). Kalau ndak
> salah ini ada hubungannya dengan type data
> (struct,union).
> 
> Mungkin ada rekan yang bisa ngasih
> penjelasan,contoh,url atau mungkin
> source code program dengan kasus seperti itu,
> soalnya dari apa yang
> selama ini saya dengar kalau mau cepat ngerti coba
> liat contoh program
> orang atau langsung baca file header seperti
> stdio.h, tapi boro-boro
> ngerti, makin lama saya baca makin mual rasanya
> soalnya saya coba baca
> source code xmms,squid (hehehe .. ketinggian
> rupanya)
> 
> --
> Regards,
> 
> Arman
> 
> --
> Berhenti langganan:
> [EMAIL PROTECTED]
> Arsip dan info: http://linux.or.id/milis
> 
> 



        
                
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

-- 
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke