C语言参数int main(int argc, char** argv)
argv是数组的数组,将字符串放在一个数组中,argv指向这个数组。这就实现了向main中传入文件路径(文件名),利于实现CP命令。
int argc argc 是指命令行输入参数的个数
char** argv argv存储了所有的命令行参数,指向一个数组
例 :hello.exe Shiqi Yu
那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
int main(int argc,char **argv)
{
printf("%d\n",argc);
printf("%s\n%s\n%s\n",argv[0],argv[1],argv[2]);
return 0;
}
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc,char **argv){
int len;
char *duf=NULL;
int fdScr=open(argv[1],O_RDWR);
if(fdScr==-1){
printf("open faild,the %s not exit\n",argv[1]);
exit(-1);
}
len=lseek(fdScr,0,SEEK_END);
duf=(char *)malloc(sizeof(char)*len+10);
lseek(fdScr,0,SEEK_SET);
read(fdScr,duf,len);
//注意添加新创建文件权限,0700。若没有0700,则文件为RDWR,不可执行。0600也行
int fdDis=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0700);
write(fdDis,duf,len);
close(fdScr);
close(fdDis);
return 0;
}
atoi()函数
可以改变grgv[]中的类型 ,把char变为int 类型
int argc,char **argv 传入文件修改配置信息
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void newduf(char *duf ,char *newc){
char *p=strstr(duf,newc);
if(p==NULL){
printf("no found");
exit(-1);
}
p=p+strlen(newc);
p= '9';
}
int main (int argc,char **argv){
int len;
char *duf=NULL;
int fdScr=open(argv[1],O_RDWR);
if(fdScr==-1){
printf("open faild,the %s not exit\n",argv[1]);
exit(-1);
}
len=lseek(fdScr,0,SEEK_END);
duf=(char *)malloc(sizeof(char)*len+10);
lseek(fdScr,0,SEEK_SET);
read(fdScr,duf,len);
char *a="LENG=";
newduf(duf,a);
/*char *p=strstr(duf,a);
p=p+strlen(a);
(*p)='9';*/
//注意光标,需要覆盖文件内容
lseek(fdScr,0,SEEK_SET);
write(fdScr,duf,len);
close(fdScr);
return 0;
}