1.利用主函数的三个函数进行传参
1).主函数的三个参数的含义:
argc:主函数的参数个数
argv:主函数的参数内容
envp:环境变量;
2).演示代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char *argv[],char *envp[])
{
int i=0;
printf("argc=%d\n",argc);
// for(;i<argc;i++)
for(;argv[i]!=NULL;i++)
{
printf("argv[%d]=%s\n",i,argv[i]);
}
return 0;
}
gcc -o main main.c
./main
./main hello 123
#观察运行结果思考argc和argv参数的含义;
3).环境变量
for(i=0;envp[i]!=NULL;i++)
{
printf("envp[%d]=%s\n",i,envp[i]);
}
4).总结:
argc:传递给主函数的参数个数
argv:传递给主函数的参数列表,字符指针数组,给主函数传递的参数都是字符串;(以NULL结尾)
envp:继承的环境变量列表,以NULL结尾;
2.利用文件操纵进行复制
2.1.open的介绍
open重载:两个参数用于打开一个已经存在的文件;三个参数的用于新建一个文件,并设置访问权限;
pathname:文件和路径和名称;
flags:文件的打开方式;
mode:文件的权限,如"0600";
2.2.write 的介绍
fd:对应打开的文件描述符
buf:写入的文件内容;
count:要写入多少个字节; 返回值:ssize_t:实际写入了多少个字节;
2.3.read的介绍
fd:对应打开的文件描述符;
buf:把文件内容读取到一块空间buf中;
count:期望要读取的字节数; 返回值:ssize_t:实际读取了多少个字节;
2.4.close的介绍
关闭文件描述符
2.5.文件描述符
文件打开以后,内核给文件的一个编号;(>0的整数)
0:标准输入; 1:标准输出; 2:标准错误输出;
3.具体代码
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
if(argc!=3)
{
printf("argc error\n");
}
char *file_name=argv[1];
char *newfile_name=argv[2];
int fdr=open(file_name,O_RDONLY);
int fdw=open(newfile_name,O_WRONLY|O_CREAT,0600);
if(fdr==-1||fdw==-1)
{
exit(0);
}
char buff[256]={0};
int num=0;
while((num=read(fdr,buff,256))>0)
{
write(fdw,buff,num);
}
close(fdr);
close(fdw);
exit(0);
}
运行结果: