文件之间的复制
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#define MAX_SIZE 1024
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#define MAX_SIZE 1024
int main(int argc,char *argv[])
{
int fd1;
int fd2;
int read_sum;
int write_sum;
char str[MAX_SIZE];
char *ptr;
if(argc != 3)
{
fprintf(stderr,"less %s fromfile tofile/n/a", argv[0]);
exit(1);
}
if((fd1 = open(argv[1], O_RDONLY)) == -1)
{
fprintf(stderr, "open %s error!/n", argv[1]);
exit(1);
}
if((fd2 = open(argv[2], O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR)) == -1)
{
fprintf(stderr, "open %s error!/n", argv[2]);
exit(1);
}
{
int fd1;
int fd2;
int read_sum;
int write_sum;
char str[MAX_SIZE];
char *ptr;
if(argc != 3)
{
fprintf(stderr,"less %s fromfile tofile/n/a", argv[0]);
exit(1);
}
if((fd1 = open(argv[1], O_RDONLY)) == -1)
{
fprintf(stderr, "open %s error!/n", argv[1]);
exit(1);
}
if((fd2 = open(argv[2], O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR)) == -1)
{
fprintf(stderr, "open %s error!/n", argv[2]);
exit(1);
}
while((read_sum = read(fd1, str, MAX_SIZE)) != 0)
{
printf("%d\n",read_sum);
if(read_sum == -1)
{
printf("read is error\n");
break;
}
else if(read_sum > 0)
{
ptr = str;
while((write_sum = write(fd2, ptr, read_sum)) != 0)
{
if(write_sum == -1)
{
printf("write is error\n");
break;
}
else if(read_sum == write_sum)
{
printf("success\n");
break;
}
else if(write_sum > 0)
{
ptr = ptr + write_sum;
read_sum = read_sum - write_sum;
}
}
if(write_sum == -1)
{
break;
}
}
}
close(fd1);
close(fd2);
}
{
printf("%d\n",read_sum);
if(read_sum == -1)
{
printf("read is error\n");
break;
}
else if(read_sum > 0)
{
ptr = str;
while((write_sum = write(fd2, ptr, read_sum)) != 0)
{
if(write_sum == -1)
{
printf("write is error\n");
break;
}
else if(read_sum == write_sum)
{
printf("success\n");
break;
}
else if(write_sum > 0)
{
ptr = ptr + write_sum;
read_sum = read_sum - write_sum;
}
}
if(write_sum == -1)
{
break;
}
}
}
close(fd1);
close(fd2);
}