中易网

C语言实现CP指令

答案:4  悬赏:80  
解决时间 2021-01-17 10:55
  • 提问者网友:兔牙战士
  • 2021-01-17 06:02
C语言实现CP指令
最佳答案
  • 二级知识专家网友:低音帝王
  • 2021-01-17 06:32
用C实现的步骤是:
1、解析命令,就是提取出源路径和目标路径,以及文件名。
2、写一个切换目录的函数,比如chgdir(char *),路径名字做参数。
3、执行切换目录函数,正确执行后,在这个目录下找到目标文件,定义一个缓冲区,把文件内容拷贝进去,找不到文件另作处理。
4、再调用2步骤中的目录切换函数,在目标路径下建立一个空文件并把缓冲区内容写进去,保存。
全部回答
  • 1楼网友:白昼之月
  • 2021-01-17 09:05

#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);
}

if(access(argv[1],F_OK) < 0){
fprintf(stderr,"%s isn't existing!\n",argv[1]);
exit(3);
}

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;
}
  • 2楼网友:青灯有味
  • 2021-01-17 07:46
copy?
追问:给你个程序帮我改下
追答:可以
追问:QQ多少 太长了放不下
追答:451361904
追问:加不了你你加我吧214610825
  • 3楼网友:廢物販賣機
  • 2021-01-17 07:12
给思路行吗?具体的程序得花一些时间啊~~ 先说cp命令用法:cp 源路径 目标路径所以用C实现的步骤是: 1、解析命令,就是提取出源路径和目标路径,以及,gysQqc
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息