手机网站设计案,网时代教育培训机构,沈阳免费网站制作,网络游戏管理暂行办法目录
前言
一、main函数的参数
二、命令行控制实现计算器
三、实现touch指令 前言
当我们在命令行输入 ls -al #xff0c;可以查看当前文件夹下所有文件的信息#xff0c;还有其他的如rm#xff0c;touch等指令#xff0c;都可以帮我们完成相应的操作。
其实运行这些…目录
前言
一、main函数的参数
二、命令行控制实现计算器
三、实现touch指令 前言
当我们在命令行输入 ls -al 可以查看当前文件夹下所有文件的信息还有其他的如rmtouch等指令都可以帮我们完成相应的操作。
其实运行这些指令的本质就是进程当我们输入相关指令的时候系统会判断该指令是否能被找到如果能找到就会执行相应的程序形成进程 让这个进程来帮我们完成相关操作。具体是如何处理的呢今天我们就来学习一下命令行参数。
一、main函数的参数
在我们之前学习c/c时main函数都没有带参数其实main函数是可以带参数的只是当时我们没有用到很复杂的场景。
main函数完整的有三个参数第一个参数 int argc 代表参数的个数第二个参数char* argc[]是字符指针数组代表参数的内容第三个参数char* envp[]为环境变量我们暂时不做了解后续学环境变量会再来看
int main(int argc,char* argv[],char* envp[])
我们用下面这段代码将argv打印出来看一下
#includestdio.hint main(int argc,char* argv[])
{int i 0;for(;iargc;i){printf(%d:%s\n,i,argv[i]); }
}我们运行可执行程序发现argv第一个参数是运行可执行程序的指令后面没有更多了。 如果我们输入 ls -al 这种类似代码我们可以看到命令行中的一个大的字符串以空格作为分隔符被分割成了几子串argv里存放的就是一个这些小子串。如下输出了4点 这样一来我们就可以通过设置输出的个数和内容来让同一份代码实现不同的功能。
二、命令行控制实现计算器
现在我们通过对命令行输入的不同实现一个加减乘除的计算机。 方法为 ./可执行程序 -算法符号 数字1 数字2 具体代码如下首先我们控制argc的参数个数保证是4个参数才继续执行否则告诉用户输入错误得按照制定的格式使用。需要注意我们命令行输入的是字符串因此需要转成整数处理。
#includestdio.h
#includestring.h
#includestdlib.h
int main(int argc,char* argv[])
{ if(argc!4) { printf(输入格式错误使用方法%s op[-add|sub|mul|div] d1 d2\n,argv[0]); return 1; } int x atoi(argv[2]); int y atoi(argv[3]); if(strcmp(argv[1],-add)0) { printf(%d%d%d\n,x,y,xy); } else if(strcmp(argv[1],-sub)0) { printf(%d-%d%d\n,x,y,x-y); } else if(strcmp(argv[1],-mul)0) { printf(%d*%d%d\n,x,y,x*y); } else if(strcmp(argv[1],-div)0) { if(y 0) printf(被除数不能为0\n); else printf(%d/%d%d\n,x,y,x/y); } else { printf(输入格式错误使用方法%s op[-add|sub|mul|div] d1 d2\n,argv[0]); return -1; }return 0;
}
我们编译后运行 正确的格式才会进行运算。错误的会告诉我们使用方法。 到这一步我们对命令行指令就更加清晰了所谓的 ls/mv/mkdir 等等指令本质上就是可执行程序我们在后面添加的 -a -r 等等选项都是通过main的参数来进行控制的输入相应的选项就能得到相应的效果。 三、实现touch指令 我们根据之前学的内容想必模拟一下touch指令也很简单了。胆码如下
#includestdio.h
#includestring.h
#includestdlib.h
int main(int argc,char* argv[])
{if(argc ! 2){printf(touch指令格式不对\n);return 1;}FILE *fp fopen(argv[1],a);if(fp NULL){perror(打开失败); return -1;}fclose(fp);return 0;
}
测试一下成功创建。