cp指令的实现:
思路:
1.C语言的参数
2.cp指令实现的思路:
a:打开src.c(原文件);
b:读取src到buf(缓存区);
c:打开/创建des.c(新文件);
d:将buf写入des.c
e:关闭文件
#include<stdio.h>
//argc:参数的个数;argv:参数的类型;argv里面的每一个参数都是数组,所以类型是二级指针,argv是一个二维数组的首地址
int main(int argc,char **argv)
{
printf("total params:%d\n",argc);//c语言参数个数
printf("NO.1 params:%s\n",argv[0]);//c语言参数类型
printf("NO.2 params:%s\n",argv[1]);//c语言参数类型
printf("NO.3 params:%s\n",argv[2]);//c语言参数类型
return 0;
}
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include<stdlib.h>
#include<string.h>
//int open(const char *pathname, int flags);
//int open(const char *pathname, int flags, mode_t mode);
//ssize_t read(int fd, void *buf, size_t count);
//ssize_t write(int fd, const void *buf, size_t count);
//off_t lseek(int fd, off_t offset, int whence);
int main(int argc,char **argv)
{
int fdsrc;
int fddes;
int n_read;
int n_write;
char *readbuf=NULL;
if(argc!=3){
printf("error\n");
exit(-1);
}
fdsrc=open(argv[1],O_RDWR);
if(fdsrc<0){
printf("open file failed\n");
}
int size=lseek(fdsrc,0,SEEK_END);
readbuf=(char*)malloc(sizeof(char)*size+8);
lseek(fdsrc,0,SEEK_SET);
n_read=read(fdsrc,readbuf,size);
if(n_read!=-1){
printf("read file success\n");
}
//目标文件如果存在,把内容全部清空
fddes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
if(fddes<-1){
printf("open file failed\n");
}
n_write=write(fddes,readbuf,strlen(readbuf));
if(n_write!=-1){
printf("write file success\n");
}
close(fdsrc);
close(fddes);
return 0;
}