需要了解:
1.c语言参数
int main(int argc,char **argv)
cp src.c des.c
参数: 0 1 2 三个参数
argv[0] argv[1] argv[2]
2.思路:
a、打开src.c
b、读src的buf
c、打开/创建des.c
d、将buf写入des.c
e、close 两个文件
以上实现cp
3.了解argc argv 的用法
#include <stdio.h>
int main(int argc,char **argv)
{
printf("totol params:%d\n",argc);
printf("No.1 params:%s\n",argv[0]);
printf("No.1 params:%s\n",argv[1]);
printf("No.1 params:%s\n",argv[2]);
return 0;
}
运行结果:
CLC@Embed_Learn:~/lianxi3$ ./a.out des src
totol params:3
No.1 params:./a.out
No.1 params:des
No.1 params:src
实现代码:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <unistd.h>
7 #include <string.h>
8
9 int main(int argc,char **argv)
10 {
11 int fdSrc;
12 int fdDes;
13 char *readbuf=NULL;
14 if(argc !=3){
15 printf("pararm error\n");
16 exit(-1);
17 }
18 fdSrc = open(argv[1],O_RDWR);
19 int size=lseek(fdSrc,0,SEEK_END);//光标移动到最后,返回值为读写指针距文件开头的字节大小
20 lseek(fdSrc,0,SEEK_SET);//光标移动到尾部
21
22 readbuf=(char *)malloc(sizeof(char)*size+8);
23 int n_read=read(fdSrc,readbuf,size);
24
25 fdDes =open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0666);
26 int n_write=write(fdDes,readbuf,strlen(readbuf));
27
28 close(fdSrc);
29 close(fdDes);
30
31
32
33 return 0;
34 }
运行结果:
CLC@Embed_Learn:~/lianxi3$ ./mycp cpdemo.c new.c
CLC@Embed_Learn:~/lianxi3$ ls
a.out fifo msg_server.c new.c pipe.c send write_fifo.c
cpdemo.c get mycp nwe.c read_fifo.c tese.c
CLC@Embed_Learn:~/lianxi3$