⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copy.c

📁 在Linux下实现文件的拷贝
💻 C
字号:
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<errno.h>#define BUFFERCAP 2048int main( int argc, char *argv[]){int source, target;int bytes_read, bytes_write;char buffer[BUFFERCAP];char *ptr;if(argc!=3)  /*检查输入的参数的合理性*/{  fprintf(stderr,"fUNCTION:%s THE INFORMATION FROM SOURCEFILE TO TARGETFILE.\n\a",argv[0]);  exit(1);}/* 打开源文件 */if( ( source = open( argv[1], O_RDONLY ) ) == -1 ){  fprintf( stderr, "Open %s Error:%s\n", argv[1], strerror( errno ) );  exit(1);}/* 创建目的文件 */if( ( target = 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( source, buffer, BUFFERCAP ) ){                                                                                                                        if( ( bytes_read==-1 ) && ( errno!=EINTR))  /* 一个致命的错误发生了 */      break;    else if(bytes_read>0)      {      ptr = buffer;      while( bytes_write = write ( target, 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( source );close( target );exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -