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

📄 temp1.c

📁 本代码是一个linux下文件操作的代码
💻 C
字号:
#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <string.h>#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))  // 从文件from_fd读取BUFFER_SIZE字节到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)) // 从buffer缓冲区写bytes_read字节到文件to_fd,返回实际字节			{				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);}

⌨️ 快捷键说明

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