gpt4 book ai didi

c++ - 获取命令行参数的大小/访问命令行参数中的单个字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:33 27 4
gpt4 key购买 nike

提前感谢您阅读本文,

我正在练习通过编写一个接受一个参数并返回其大小的程序从命令行获取和操作参数。从我读过的内容来看,每个命令行参数都是空终止的,每个单独的字符都可以像普通的二维数组一样访问(如果我错了请纠正我)。所以我写道:

for (int i = 0; i > -1; i++)
{
cout << "Doing " << &argv[1][i] << endl;
if (&argv[1][i] != "\0") Size++;
else break;
}

这在 g++ 下编译得很好,但是当我运行它时,会发生这种情况:

user@computer:~/Programming$ ./ReturnSize 12345
Doing 12345
Doing 2345
Doing 345
Doing 45
Doing 5
Doing
Doing ORBIT_SOCKETDIR=/tmp/orbit-user

然后它继续运行直到出现段错误。我究竟做错了什么?有没有更好的方法来确定参数的大小/访问参数中的各个元素?

最佳答案

在这个声明中

if (&argv[1][i] != "\0") Size++;

您比较两个指针(字符串文字隐式转换为指向该表达式中第一个元素的指针)。由于它们占据不同的内存区域,if 语句中的条件将始终等于 true,除非数组彼此重叠。

将此语句更改为

if ( argv[1][i] != '\0' ) Size++;

要获取命令行参数的大小,您可以使用标准 C 函数 std::strlen在 header 中声明 <cstring>

例如

size_t Size = std::strlen( argv[1] );

至于你的循环,那么它可以写得更简单

size_t Size = 0;
while( argv[1][Size] )
{
cout << "Doing " << &argv[1][Size] << endl;
++Size;
}

关于c++ - 获取命令行参数的大小/访问命令行参数中的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com