C语言实现CP指令

我QQ214610825程序太长放不下求帮改... 我QQ214610825 程序太长 放不下 求帮改 展开
 我来答
许诗文00
2015-07-08 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26.5万
展开全部
用C实现的步骤是:
1、解析命令,就是提取出源路径和目标路径,以及文件名。
2、写一个切换目录的函数,比如chgdir(char *),路径名字做参数。
3、执行切换目录函数,正确执行后,在这个目录下找到目标文件,定义一个缓冲区,把文件内容拷贝进去,找不到文件另作处理。
4、再调用2步骤中的目录切换函数,在目标路径下建立一个空文件并把缓冲区内容写进去,保存。
嚒頭
2012-07-18 · TA获得超过103个赞
知道答主
回答量:122
采纳率:0%
帮助的人:80.4万
展开全部
/***********************************
实现普通文件(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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
精致且灿烂丶典范k
2012-03-31 · TA获得超过9583个赞
知道大有可为答主
回答量:1.3万
采纳率:3%
帮助的人:4099万
展开全部
给思路行吗?具体的程序得花一些时间啊~~ 先说cp命令用法:cp 源路径 目标路径所以用C实现的步骤是: 1、解析命令,就是提取出源路径和目标路径,以及,gysQqc
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
451361904
2012-03-31 · TA获得超过441个赞
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:88.3万
展开全部
copy?
更多追问追答
追问
给你个程序  帮我改下
追答
可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式