C语言实现CP指令
发布网友
发布时间:2022-03-31 17:18
我来回答
共4个回答
热心网友
时间:2022-03-31 18:47
用C实现的步骤是:
1、解析命令,就是提取出源路径和目标路径,以及文件名。
2、写一个切换目录的函数,比如chgdir(char *),路径名字做参数。
3、执行切换目录函数,正确执行后,在这个目录下找到目标文件,定义一个缓冲区,把文件内容拷贝进去,找不到文件另作处理。
4、再调用2步骤中的目录切换函数,在目标路径下建立一个空文件并把缓冲区内容写进去,保存。
热心网友
时间:2022-03-31 20:05
/***********************************
实现普通文件(regular file)内容的复制
./a.out file1 file2 linux下gcc编译
cp file1 file2 本程序仅仅实现本功能
************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#define BUFFSIZE 4096
int main(int argc, char *argv[])
{
int fds,fdt,n;
struct stat buf;
char buff[BUFFSIZE];
/*判断命令行参数*/
if(argc != 3){
fprintf(stderr,"usage: ... filename filename\n");
exit(1);
}
if(stat(argv[1],&buf) < 0){
perror("stat error");
exit(2);
}
/*判断file1是否存在*/
if(access(argv[1],F_OK) < 0){
fprintf(stderr,"%s isn't existing!\n",argv[1]);
exit(3);
}
/*判断file1是否是普通文件*/
if(S_ISREG(buf.st_mode) == 0){
fprintf(stderr,"%s isn't regular file!\n",argv[1]);
exit(4);
}
/*打开目标文件和源文件*/
if((fds = open(argv[1],O_RDONLY)) < 0){
perror("open source file error");
exit(5);
}
if((fdt = open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IXUSR)) < 0){
perror("open target file error");
exit(5);
}
/*读写操作*/
while((n = read(fds,buff,BUFFSIZE)) > 0)
if(write(fdt,buff,n) != n)
perror("write error");
close(fds);
close(fdt);
return 0;
}
热心网友
时间:2022-03-31 21:40
给思路行吗?具体的程序得花一些时间啊~~ 先说cp命令用法:cp 源路径 目标路径所以用C实现的步骤是: 1、解析命令,就是提取出源路径和目标路径,以及,gysQqc
热心网友
时间:2022-03-31 23:31
copy?