/* copyc.c - kopiranje datoteke sa read/write */ #include /* standardno I/O zaglavlje */ #include /* status datoteke i tipovi vremena */ #include /* strukture i funkcije statusa datoteke */ #include /* Rukovanje datotekama o I/O niskog nivoa */ #include /* zastavice u open/sopen funkcijama */ #define READ_SIZE 1024 /* broj bajtova koji se cita */ main(int argc,char *argv[]) { int in, /* pokazivac d. za ulaznu d. */ out; /* pokazivac d. za izlaznu d. */ long n; char buffer[ READ_SIZE ]; int nr; /* ispitivanje imena d. */ if( argc < 3 ) { printf(" Koriscenje: copyc ulazna-dat izlazna-dat \n"); exit(1); } in = open(argv[1],O_RDONLY); /* otvara ulaznu d. za citanje */ /* kreira izlaznu datoteku */ out = open(argv[2],O_WRONLY | O_CREAT, S_IREAD | S_IWRITE); /* da li su d. uspesno otvorene? */ if( (in < 0 ) || (out < 0 ) ) { printf("Ne moze da se otvori datoteka \n"); exit(2); } n = 0L; nr = read(in,buffer,READ_SIZE); /* uzima prvi karakter */ while( nr > 0 ) /* stop kada nema karaktera */ { n = n + nr; write(out,buffer,nr); /* ispisuje karakter u izlaznu d. */ nr = read(in,buffer,READ_SIZE); /* uzima sledeci karakter */ } close(in); close(out); printf(" %ld kopiranih karaktera\n", n ); }