我们今天来练习一下,Linux 的 cp 指令的实现,实现 cp demo1.c demo2.c
cp
(写到文件中的全部都是字符)
首先我们得先了解到 C 语言的 main() 函数其实是有两个参数的;
C语言规定main函数的参数只能有两个, 习惯上这两个参数写为 argc 和 argv。
main函数的函数头可写为: main (argc,argv);
C语言还规定 argc (第一个形参)必须是整型变量, argv ( 第二个形参)必须是指向字符串的指针数组。
所以加上形参说明后,main函数的函数头应写为:
main (argc,argv) int argv; char *argv[];
或写成: main (int argc,char *argv[]) ;
但其实,也写问 main(int argc, char ** argv);
第一个参数 argc ,指 命令行输入参数的个数
第二个参数 argv ,是字符指针数组,每个元素都是一个字符指针,指向一个字符串,即:命令行中的每一个参数
其实还有第三个参数 envp,也是一个字符指针的数组,这个数组的每一个元素是指向一个环境变量的指针;
举个例子:
#include<stdio.h>
int main(int argc, char ** argv )
{
printf("argc = %d\n",argc);
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);
printf("argv[2] = %s\n",argv[2]);
return 0;
}
保存退出以后,进入命令行中
输入:./a.out 123 asdf // ./a.out 以后随便输两个
运行结果为:
argc = 3 argv[0] = ./a.out argv[1] = 123 argc[2] = asdf
好了,我们来写一下 实现 cp 指令的代码吧
#include<stdio.h> #include<sys/types.h>
#include<stdlib.h> #