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