LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1213|回复: 4

请教一个linux的C程序(文件拷贝)

[复制链接]
发表于 2004-7-22 23:10:19 | 显示全部楼层 |阅读模式
下面是一个实现文件拷贝的程序应该用到哪些头文件?
我总是编译不成功,请各位大蛱们帮帮忙
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include
#include
#include

#define BUFFER_SIZE 1024

int main(int argc,char **argv)
{

int from_fd,to_fd;
int bytes_read,bytes_write;
char buffer[BUFFER_SIZE];
char *ptr;

if(argc!=3)
  {
fprintf(stderr,"Usage:%s fromfile tofile\n\a",argv[0]);
exit(1);
  }

/* 打开源文件 */

if((from_fd=open(argv[1],O_RDONLY))==-1)
  {
fprintf(stderr,"Open %s Error:%s\n",argv[1],strerror(errno));
exit(1);
}

/* 创建目的文件 */

if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
  {
        fprintf(stderr,"Open %s Error:%s\n",argv[2],strerror(errno));
        exit(1);
}

/* 以下代码是一个经典的拷贝文件的代码 */

while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
{
/* 一个致命的错误发生了 */
   if((bytes_read==-1)&&(errno!=EINTR)) break;
   else if(bytes_read>0)
       {
  ptr=buffer;
  while(bytes_write=write(to_fd,ptr,bytes_read))
   {
/* 一个致命错误发生了 */
     if((bytes_write==-1)&&(errno!=EINTR))break;
/* 写完了所有读的字节 */
     else if(bytes_write==bytes_read) break;
/* 只写了一部分,继续写 */
     else if(bytes_write>0)
           {
      ptr+=bytes_write;
   bytes_read-=bytes_write;
          }
          }
/* 写的时候发生的致命错误 */
         if(bytes_write==-1)break;

       }
  }
close(from_fd);
close(to_fd);
exit(0);
}
发表于 2004-7-22 23:32:57 | 显示全部楼层
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
 楼主| 发表于 2004-7-23 00:30:26 | 显示全部楼层
还是没编译成功,出现下面的错误:
[root@localhost code]# gcc -c file.c
file.c:73:10: #include expects "FILENAME" or <FILENAME>
file.c:74:10: #include expects "FILENAME" or <FILENAME>
file.c:75:10: #include expects "FILENAME" or <FILENAME>
file.c:76:10: #include expects "FILENAME" or <FILENAME>
file.c:77:10: #include expects "FILENAME" or <FILENAME>
file.c:82: redefinition of `main'
file.c:13: `main' previously defined here
发表于 2004-7-23 08:20:30 | 显示全部楼层
老天,把前面那些#include后面没东西的行删掉
 楼主| 发表于 2004-7-23 09:38:31 | 显示全部楼层
成功了,非常感谢~~!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表