Cp 原文件 目标文件
1、C语言的参数
2、思路:
(补充:)
int main(int argc,char **argv){//**argv里的每一项都是数组 argc表示三个参数
printf("total par ams %d\n",argc);
printf("NO.1 par ams %s\n",argv[0]);
printf("NO.2 par ams %s\n",argv[1]);
printf("NO.3 par ams %s\n",argv[2]);
return 0;
}
1、在刚开始学习写程序的人员经常会碰到如下形式的main函数,int main(int argc, char** argv)或者int main(int argc, char* argv[]),或者void main(int argc, char** argv)或者void main(int argc, char* argv[]),细心点的初学者一定会发现,这里的main函数,有两个输入参数,argc和argv。
2、下面我就来简单介绍一下这里argc和argv的含义。其实,这里的argc是argument count的简称,argv是argument variable的简称,也就是,argc指代参数的个数,argv指代每个参数,需要留意的是,这里的argv是一个二维指针。有的程序员,在写程序的时候,喜欢采用命令行的方式启动(有地啊类似于DOS方式)程序。对于这种方式启动的程序,一般要求程序的使用者,通过命令行来输入一些必要的参数,从而使得程序可以正确的运行。而由命令行来启动的程序,如果你采用鼠标双击来启动的话,很有可能会“一闪而过”,也就是:程序什么也不做,马上退出。其实,通过命令行的方式来启动程序,也很简单。
假设,需要用命令行启动的程序是位于D:/testExample/test.exe,那么,首先,鼠标依次点击:开始---->运行,输入,“cmd”,回车,这样,就进入了命令行输入方式(有点像DOS界面),然后,输入“cd d:/testExample”, 回车,输入“d:”回车,输入“test”,这样,就达到了以命令行方式启动的目的了。一般来说,通过命令行启动的方式,需要程序使用者输入一些额外的参数,例如,进入命令行以后,输入"test c:/testPic/01.jpg",就是在启动test.exe程序的同时,给该程序指定一个额外的参数“c:/testPic/01.jpg”。这里,argc也就是参数的个数,就是2个,test为第一个参数,空格之后的“c:/testPic/01.jpg”是第二个参数,换句话说,argc=2,argv[0]=“test”,argv[1]=“c:/testPic/01.jpg”。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv){//输入参数必须为三个,第一个为test 第二个为输入文件的路径,第三个为输出文件的路径
int fdScr;
int fdDes;
char *readBuf=NULL;
if(argc!=3){
printf("Dar arm error\n");
exit(-1);
}
fdScr=open(argv[1],O_RDWR);
int size=lseek(fdScr,0,SEEK_END);
lseek(fdScr,0,SEEK_SET);
readBuf=(char *)malloc(sizeof(char)*size+8);
int n_read=read(fdScr,readBuf,size);
fdDes=open(argv[2],O_RDWR|O_CREATE|O_TRUNC,0600);
int n_write=(fdDes,readBuf,strlen(readBuf));
close(fdScr);
close(fdDes);
return 0;
}