【发布时间】:2014-04-17 06:28:05
【问题描述】:
提前感谢您阅读本文,
我正在通过编写一个接收一个参数并返回其大小的程序来练习从命令行获取和操作参数。根据我的阅读,每个命令行参数都以空结尾,并且每个单独的字符都可以像普通的二维数组一样访问(如果我错了,请纠正我)。于是我写了:
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
然后它继续运行,直到出现段错误。 我究竟做错了什么?有没有更好的方法来确定参数的大小/访问参数中的单个元素?
【问题讨论】:
-
为什么不使用
strlen(char*)?
标签: c++ linux command-line-arguments getopts