文件复制代码

来源:互联网 发布:知水牌富氢水杯的价格 编辑:程序博客网 时间:2024/06/07 07:25
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#define MAX_SIZE 1024int read_line(int fd, char *buffer, int max_size){    int i;    int n_read;    char temp;    for(i = 0; i < max_size; i++)    {        if((n_read=read(fd, &temp, 1)) == -1)    {        perror("read error");        exit(1);    }        if(n_read == 0)    {        return 0;    }    if(temp == '\n')    {        buffer[i] = ' ';        return i + 1;    }    else    {        buffer[i] = temp;    }    }    return i;}int main(int argc, char **argv){    int from_fd;    int to_fd;    int n_read;    int n_write;    char buffer[MAX_SIZE];    if(argc != 3)    {        printf("please input from_file and to_file!\n");    exit(1);    }    if((from_fd = open(argv[1], O_RDONLY)) == -1)    {        printf("Open %s Error:%s\n", argv[1], strerror(errno));    exit(1);    }    if((to_fd = open(argv[2], O_RDWR | O_CREAT, 0766)) == -1)    {        printf("Open %s Error:%s\n", argv[2], strerror(errno));    exit(1);    }    while((n_read = read_line(from_fd, buffer, sizeof(buffer))) != 0)    {        buffer[n_read] = '\0';    write(to_fd, buffer, strlen(buffer));    write(to_fd, "\n", 1);    memset(buffer, 0 ,sizeof(buffer));    }    close(from_fd);    close(to_fd);    return 0;}
0 0
原创粉丝点击