#include<stdio.h> #include<fcntl.h> #include<syscall.h> #define PERMS 0777
void error(char *,...);
main(int argc, char *argv[]) { int f1, f2, n; char buf[BUFSIZ];
if(argc != 3) error("Usage: cp from to"); if((f1 = open(argv[1], O_RDONLY, 0)) == -1) error("cp: can't open %s",argv[1]) //the first method ,set the output length.
/* while ((n = read(f1, buf, BUFSIZ)) > 0){ buf[n] = '\0'; printf("-->%s",buf); } */ //the second method
char formatstr[20]; while ((n = read(f1, buf, BUFSIZ)) > 0){ sprintf(formatstr,"-->%%.%ds",n); printf(formatstr,buf); } if((f1 = open(argv[1], O_RDONLY, 0)) == -1) error("cp: can't open %s",argv[1]); if((f2 = creat(argv[2], PERMS)) == -1) error("cp: can't create %s,mode %03o", argv[2],PERMS); while ((n = read(f1, buf, BUFSIZ)) > 0) if(write(f2, buf, n) != n) error("cp: write error onfile %s",argv[2]); return 0; }
|