查看: 621|回复: 5

[C/C++] 检测启动命令行个数

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7757
人气
176
分享
52

最佳新人活跃会员

发表于 2022-8-1 09:02:33 | 显示全部楼层 |阅读模式
【什么是启动命令行】
例如:这个程序为n.exe,那么在powershell里面输入
[PowerShell] 纯文本查看 复制代码
.\n.exe

这行命令就是启动参数
如果直接在explorer.exe里启动,启动命令是这样的
[AppleScript] 纯文本查看 复制代码
explorer.exe "path\n.exe"


【如何检测启动命令行】
检测启动命令行可以使用以下两个参数
[C++] 纯文本查看 复制代码
int argc //命令行的个数
char * argv[] //命令行的16进制数

这两个参数位于main函数中,如下
[C++] 纯文本查看 复制代码
int main(int arvc, char * argv[])

在VS的旧版本中,默认程序就是这样
但是新版本VS,默认是没有这两个参数的


【检测启动命令行的个数】
输入了多少参数,argc的数值就是多少,但是这样就有一个问题
[PowerShell] 纯文本查看 复制代码
.\n.exe

本身就是一个参数,所以还要-1
源码
[C++] 纯文本查看 复制代码
#include <iostream>
int main(int argc, char * argv[])
{
    int commandNum = 0; //一定要初始化,否则数值会不准确
    commandNum = argc - 1;
    if (commandNum == 0){
        printf("请输入一个参数");
    }
    else {
        printf("输入了%d个参数",commandNum);
    }
    system("pause");

    return 0;
}

输入
[AppleScript] 纯文本查看 复制代码
.\n.exe -f

输出
[AppleScript] 纯文本查看 复制代码
输入了1个参数

输入
[PowerShell] 纯文本查看 复制代码
.\n.exe

输出
[AppleScript] 纯文本查看 复制代码
请输入一个参数

小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

0

技术

3

魅力

0

原创

略知一二

Rank: 3Rank: 3

积分
868
人气
25
分享
0
发表于 2022-8-1 16:06:57 | 显示全部楼层
本帖最后由 YFSafe005 于 2022-8-1 16:08 编辑

这叫算法吗?
@hackerbob
@skystars

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7757
人气
176
分享
52

最佳新人活跃会员

 楼主| 发表于 2022-8-1 16:15:41 | 显示全部楼层
YFSafe005 发表于 2022-8-1 16:06
这叫算法吗?
@hackerbob
@skystars

那你说我选啥。。。
小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

0

技术

3

魅力

0

原创

略知一二

Rank: 3Rank: 3

积分
868
人气
25
分享
0
发表于 2022-8-1 16:25:50 | 显示全部楼层
蒟蒻 发表于 2022-8-1 16:15
那你说我选啥。。。

反正不能选算法

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1721
人气
179
分享
17

最佳新人活跃会员

发表于 2022-8-1 16:53:05 | 显示全部楼层
蒟蒻 发表于 2022-8-1 16:15
那你说我选啥。。。

选 源码 更恰当

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1721
人气
179
分享
17

最佳新人活跃会员

发表于 2022-8-1 16:54:05 | 显示全部楼层
YFSafe005 发表于 2022-8-1 16:06
这叫算法吗?
@hackerbob
@skystars

这确实不是算法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表