1、代码实现
#include#include #include #include int main(int argc, char **argv) //不要写成char **argv[] { if (argc != 3){ printf("parama errorn"); exit(-1); } int fd_src; fd_src = open(argv[1], O_RDWR); if (fd_src > 0){ printf("fd_src = %dn", fd_src); } int file_size = lseek(fd_src, 0, SEEK_END); //计算出源文件大小 printf("the size of source file is %dn", file_size); char *readBuf = NULL; readBuf = (char *)malloc(file_size); memset(readBuf, ' ', file_size); lseek(fd_src, 0, SEEK_SET); //将光标移到文件首位置,再进行读取文件内容操作 int n_read = read(fd_src, readBuf, file_size); printf("read %d bytesn", n_read); int fd_des; fd_des = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0600); //若目标文件已存在,O_TRUNC可直接将先前的内容清除 int n_write = write(fd_des, readBuf, strlen(readBuf)); printf("write %d bytesn", n_write); close(fd_src); //关闭文件 close(fd_des); return 0; }
代码运行结果:
实现cp复制文件成功
**2、关于int argc,char argv代表的含义,通过下列代码便能说明
#include#include int main(int argc, char **argv) { if (argc != 3){ printf("parama errorn"); exit(-1); } printf("argc is %dn", argc); printf("argv[0]: %sn", argv[0]); printf("argv[1]: %sn", argv[1]); printf("argv[2]: %sn", argv[2]); return 0; }
运行结果:
在main()函数可以带两个形参,一般分为argc和argv。argc是参数个数,定义为int,argv是字符串数组,存的是参数,定义为char**或者char* argv[]。对于int main(int argc, char *argv[])而言:
#includeint main(int argc, char *argv[]) { printf("argc = %dn", argc); printf("argv[0]: %sn", argv[0]); printf("argv[1]: %sn", argv[1]); printf("argv[2]: %sn", argv[2]); return 0; }
得到输出
char *argv[] : argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针。



