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不存在:%mn",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用了两次。。