首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-10-14 
LINUX C 关于写文件的问题,文件为何写不进去,郁闷!C/C++ code#include stdio.h#include fcntl.h#inclu

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用了两次。。

热点排行