读书人

LINUX C 关于写文件的有关问题文件为

发布时间: 2012-10-14 14:55:07 作者: rapoo

LINUX C 关于写文件的问题,文件为何写不进去,郁闷!

C/C++ code
#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int openfile(const char * filename){    int fd;    fd=open(filename,O_RDONLY);    if(fd==-1) printf("open err:源文件%s不存在:%m\n",filename), exit(-1);    return fd;}int openfile2(const char * filename){    int fd;    fd=open(filename,O_RDWR|O_CREAT|O_EXCL,0666);    if(fd==-1) printf("file exist!\n");    return fd;}void save(int fd,int fd2){    char buf[20];    int n;    bzero(buf,sizeof(buf));    while((n=read(fd,buf,20))>0)    {        write(fd2,buf,n);    }}int main(int args,char**argv){    int fd;    int fd2;        fd=openfile(argv[1]);    fd=openfile2(argv[2]);        save(fd,fd2);        close(fd);    close(fd2);    return 0;}



【程序目标】:写一个程序负责文件拷贝
main 存在的文件 新的文件名

./main source.dat des.dat //source.dat 我事先写好了
【问题】我写出来的程序,为什么拷贝出来的新文件大小为0,就是新文件里面没数据。
分析:会不会是save函数中里面写错什么了。

望高手指点,感谢!


[解决办法]
int fd;
int fd2;

fd=openfile(argv[1]);
fd=openfile2(argv[2]);


仔细一点, fd用了两次。。

读书人网 >UNIXLINUX

热点推荐