当前位置: 首页> 教育> 锐评 > 网站核心推广思路_潍坊推广平台_湖北网络推广seo_拉新推广渠道

网站核心推广思路_潍坊推广平台_湖北网络推广seo_拉新推广渠道

时间:2025/7/12 2:56:38来源:https://blog.csdn.net/2401_85828611/article/details/144408786 浏览次数:0次
网站核心推广思路_潍坊推广平台_湖北网络推广seo_拉新推广渠道

目录

1.前置知识

"命令"的含义

 运行C语言程序

2.介绍

main函数的参数

实验1

执行结果

实验2

执行结果

修改代码

实验3

分析

方法:遍历数组argv[]中的所有参数

 执行结果

修改代码

执行结果


1.前置知识

"命令"的含义

WIN+R输入cmd,在cmd窗口下输入calc后回车

会发现打开了计算器程序

这里的"calc"被称为命令,因此命令在本质上可以理解为程序

 运行C语言程序

来到可执行程序的目录下,单击展示路径的地方(即地址栏)

输入cmd

会发现cmd会切换到当前目录下执行

输入C程序的名称就可执行程序

2.介绍

和以往写的程序有所不同,main函数里没有参数

int main()
{//......return 0;
}

但编写命令行程序时,main函数是有参数的!

main函数的参数

格式

int main(int argc, char* argv[ ])
{//......return 0;
}

两个参数:int类型的argc,char*类型的argv

argc全称 argument count;argv的全称argument vector

argc存储命令行参数的个数

argv指向存储参数的数组的首元素

实验1

制以下代码到VS上编译成可执行程序,用cmd去运行这个程序(注意:不要用VS的调试器,Ctrl+F7生成解决方案)

打印Hello World!

#include <stdio.h>
int main(int argc, char* argv[ ])
{printf("Hello World!");return 0;
}

执行结果

实验2

#include <stdio.h>
int main(int argc, char* argv[ ])
{printf("%s", argv[0]);return 0;
}
执行结果

会发现argv[0]存储的实际上是程序的名称

可以这么理解:cmd为main函数传递了1个参数Command.exe,使得参数个数1被写入argc,Command.exe被写入argv指向的数组

修改代码

在printf后再加一行printf("%s", argv[1]);编译后,用cmd执行程序,查看执行结果

会发现Command.exe后跟了一个(null),原因是越界访问

只传了一个参数,但要打印两个参数,导致argv[1]没有值,因此打印(null),即空

实验3

设计一个程序,在cmd中输入Commend.exe --version来显示程序的版本,字符串"The Commend.exe's version is 1.0."

分析

cmd向Commend.exe传递了两个参数Commend.exe和--version(相邻的参数用空格分开),需要自行解析--version

方法:遍历数组argv[]中的所有参数

比较字符串是否相等用strcmp函数,切忌使用argv[i]=="......"!!!!!!

#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[ ])
{for (size_t i = 0; i < argc; i++){if (strcmp(argv[i], "--version")==0){printf("The Commend.exe's version is 1.0.");}}return 0;
}
 执行结果

正确输入参数后会打印结果,否则不显示参数

修改代码

输入"Commend.exe --version"或"Commend.exe -v"都能打印版本

则if语句修改为

if (strcmp(argv[i], "--version")==0 || strcmp(argv[i], "-v") == 0)
执行结果

问题:既然只检查"--version"和"-v"参数(都是第二个参数),直接写成下面代码不就行了吗?能达到同样的效果,为什么需要遍历参数数组?

#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[ ])
{if (strcmp(argv[1], "--version")==0 || strcmp(argv[1], "-v") == 0){printf("The Commend.exe's version is 1.0.");}return 0;
}

原因见下篇文章

关键字:网站核心推广思路_潍坊推广平台_湖北网络推广seo_拉新推广渠道

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: