英国有哪些做折扣的网站,南通网站关键词优化,wordpress vip会员主题,管理类手机网站朋友们、伙计们#xff0c;我们又见面了#xff0c;本期来给大家解读一下有关Linux命令行参数的相关知识点#xff0c;如果看完之后对你有一定的启发#xff0c;那么请留下你的三连#xff0c;祝大家心想事成#xff01; C 语 言 专 栏#xff1a;C语言#xff1a;从入… 朋友们、伙计们我们又见面了本期来给大家解读一下有关Linux命令行参数的相关知识点如果看完之后对你有一定的启发那么请留下你的三连祝大家心想事成 C 语 言 专 栏C语言从入门到精通 数据结构专栏数据结构 个 人 主 页 stackY、 C 专 栏 C Linux 专 栏 Linux 目录 1. 命令行参数
1.1 命令行参数是什么
1.2 实现命令行版的计算器
1.3 自定义实现基本指令 1. 命令行参数 从我们写代码到现在我们说mian函数是程序的入口点那么既然是函数就要被调用 在Linux系统中一个进程包括mian函数是通过父进程fork出子进程然后开始执行的在C语言程序中没有其他函数直接调用mian函数main函数的执行代表了整个程序的开始而程序的结束则是通过main函数的返回值来表示。 其实在我们Linux系统中mian函数也是可以带参数的 int main(int argc, char * argv[]) 那么这两个参数是代表什么意思呢可以先来看一段代码 #include stdio.hint main(int argc, char* argv[])
{for(int i 0; i argc; i){printf(%d: %s\n, i, argv[i]);}return 0;
}1.1 命令行参数是什么 通过代码的实验可以看到 argc就是我们在命令行输入的选项个数以空格作为分隔符 argv依次保存的是每一个通过空格分割的选项字串的起始地址最后一个位置以NULL结尾 那么有没有可能argv[]里面没有任何数据呢 肯定至少都有一个因为启动程序的指令./可执行程序 就已经是第一个参数了! 上述工作由shell或者OS自动帮我们完成 1.2 实现命令行版的计算器 可以通过命令行参数然后编写代码实现一个简易版的计算器 通过启动可执行程序然后在后面跟上运算法则再带上两个数 ./可执行程序 -add num1 num2 #include stdio.h
#include string.h
#include stdlib.h// ./可执行程序 -add num1 num2
int main(int argc, char *argv[])
{// 判断输入是否合理if (argc ! 4){// 提示正确的使用printf(Use error, Usage: %s op[-add|sub|mul|div] num1 num2\n, argv[0]);return 1;}int x atoi(argv[2]); // 转化为整数int y atoi(argv[3]);int result 0;if (strcmp(argv[1], -add) 0){result x y;printf(%d %d %d\n, x, y, result);}else if (strcmp(argv[1], -sub) 0){result x - y;printf(%d - %d %d\n, x, y, result);}else if (strcmp(argv[1], -mul) 0){result x * y;printf(%d * %d %d\n, x, y, result);}else if (strcmp(argv[1], -div) 0){if (0 y)printf(%d/%derror! div zero\n, x, y);elseprintf(%d/%d%d\n, x, y, x / y);}else{printf(Use error, you should use right command line\nUsage: %s op[-add|sub|mul|div] d1 d2\n, argv[0]);}return 0;
} 通过使用命令行参数来使用这个计算器然后再对比我们使用的指令比如ls、ls -l、 ls -l -a、ls -l -a -n、touch file等等这些指令后面跟的选项就类似于现在实现的计算器所以就可以得出我们使用指令的时候第一个就是要运行的可执行程序后面跟的选项就是一个个命令行参数然后将这些命令行根据空格分割传递给这个程序然后就可以实现制定操作了 1.3 自定义实现基本指令 命令行参数可以支持各种指令级别的命令行选项的设置 同样的我们也可以使用命令行参数来完成一些指令操作通过使用C语言文件操作接口来实现touch命令 #include stdio.h
#include stdlib.hint main(int argc, char *argv[])
{// ./mytouch 文件名// 判断是否合法if (argc ! 2){printf(touch: missing file operand\n);return 1;}FILE *fp fopen(argv[1], w);if (fp ! NULL)fclose(fp);return 0;
} 朋友们、伙计们美好的时光总是短暂的我们本期的的分享就到此结束欲知后事如何请听下回分解~最后看完别忘了留下你们弥足珍贵的三连喔感谢大家的支持